Python 如何向列表中的每个元素添加整数?

Python 如何向列表中的每个元素添加整数?,python,loops,addition,Python,Loops,Addition,如果我有list=[1,2,3]并且我想向每个元素添加1,以获得输出[2,3,4], 我该怎么做 我假设我会使用for循环,但不确定具体如何使用 new_list = [x+1 for x in my_list] .列表理解中的其他答案可能是简单加法的最佳选择,但如果您有一个更复杂的函数需要应用于所有元素,则可能是一个很好的选择 在您的示例中,它将是: >>> map(lambda x:x+1, [1,2,3]) [2,3,4] Python 2+: >>>

如果我有
list=[1,2,3]
并且我想向每个元素添加
1
,以获得输出
[2,3,4]
, 我该怎么做

我假设我会使用for循环,但不确定具体如何使用

new_list = [x+1 for x in my_list]

.

列表理解中的其他答案可能是简单加法的最佳选择,但如果您有一个更复杂的函数需要应用于所有元素,则可能是一个很好的选择

在您的示例中,它将是:

>>> map(lambda x:x+1, [1,2,3])
[2,3,4]
Python 2+:

>>> mylist = [1,2,3]
>>> map(lambda x: x + 1, mylist)
[2, 3, 4]
Python 3+:

>>> mylist = [1,2,3]
>>> list(map(lambda x: x + 1, mylist))
[2, 3, 4]

编辑:这不合适

首先,不要将“列表”一词用于变量。它隐藏关键字
列表

最好的方法是使用拼接在适当的位置进行,注意
[:]
表示拼接:

>>> _list=[1,2,3]
>>> _list[:]=[i+1 for i in _list]
>>> _list
[2, 3, 4]

这里我的意图是公开列表中的项是否为整数,它是否支持各种内置函数

如果您想使用numpy,还有另一种方法,如下所示

import numpy as np
list1 = [1,2,3]
list1 = list(np.asarray(list1) + 1)

找到了一种效率不高但独特的方法。因此,在所有人之间共享它。是的,它需要额外的空间来放置另一个列表

from operator import add
test_list1 = [4, 5, 6, 2, 10]
test_list2 = [1] * len(test_list1)

res_list = list(map(add, test_list1, test_list2))

print(test_list1)
print(test_list2)
print(res_list)

#### Output ####
[4, 5, 6, 2, 10]
[1, 1, 1, 1, 1]
[5, 6, 7, 3, 11]

上面的许多答案都很好。我也看到了一些奇怪的答案。此外,最后一个答案是通过一个正常的循环。这种给出答案的意愿让我想到了
itertools
numpy
,它们将以不同的方式完成相同的工作

在这里,我提出了不同的工作方法,上面没有回答

导入操作符
进口itertools
x=[3,5,6,7]
整数=89
"""
想要更多vairaint也可以使用itertools的zip_,而不是zip
"""
#懒惰评估
a=itertools.starmap(operator.add,zip(x,[89]*len(x))#这不是可下标的,而是可下标的
印刷品(a)
对于我来说,在一个:
打印(i,end=“,”)
#准备好的清单
a=list(itertools.starmap(operator.add,zip(x,[89]*len(x)))#此返回列表
印刷品(a)
#使用numpy(在此之前,如果没有“pip install numpy”,请安装numpy)
进口numpy
res=numpy.ones(len(x),dtype=int)*整数+x#返回numpy数组
res=numpy.array(x)+integer#您也可以使用它,实际上有很多方法可以使用
打印(res)
打印(res.shape)#打印数组的结构,即形状
#如果您特别想要一个列表,那么使用tolist
res_list=res.tolist()
打印(资源列表)
输出

>>> <itertools.starmap object at 0x0000028793490AF0> # output by lazy val
>>> 92,94,95,96,                                     # output of iterating above starmap object
>>> [92, 94, 95, 96]                                 # output obtained by casting to list
>>>                   __
>>> # |\ | |  | |\/| |__| \ /
>>> # | \| |__| |  | |     |
>>> [92 94 95 96]                                    # this is numpy.ndarray object
>>> (4,)                                             # shape of array
>>> [92, 94, 95, 96]                                 # this is a list object (doesn't have a shape)
>#由lazy val输出
>>>92,94,95,96,#星图对象上方迭代的输出
>>>[92,94,95,96]#通过强制转换到列表获得的输出
>>>                   __
>>> # |\ | |  | |\/| |__| \ /
>>> # | \| |__| |  | |     |
>>>[92 94 95 96]#这是numpy.ndarray对象
>>>(4,)#阵列形状
>>>[92,94,95,96]#这是一个列表对象(没有形状)
我强调使用
numpy
的唯一原因是,人们应该始终对像numpy这样的库进行这样的操作,因为它对于非常大的阵列来说是高效的

import numpy as np

np.add([1, 2, 3], 1).tolist()

[2, 3, 4]

以防万一,有人正在寻找一种只使用内置而不使用
lambda
s的解决方案:

从functools导入部分
从操作员导入添加
我的列表=范围(1,4)#列表(我的列表)#=>[1,2,3]
my_list_plus_one=列表(map(partial(add,1),my_list)#[2,3,4]

map(1.\uu add\uuu,…)
也可以工作。请注意,在
1
之间需要一个空格,以防止解析器认为它是一个float。我最后用一个列表“容器”将其封装,以摆脱映射对象
list(map(lambda x:x+1,[1,2,3]))
本讲座将对此进行解释:有关Python名称和值的事实和神话:√ 很棒的信息。让人大开眼界。@DaniSpringer,因为您没有分配给列表。这与执行
lst=[1,2,3];e=lst[0]相同;e+=1
e
没有关于它来自何处的任何信息,它只是一个变量,列表中的一个元素已被分配到该变量。在分配了其他内容之后,列表
lst
不会改变。这个答案看起来与我非常相似。相应的答案是:
new\u list=(x+1代表我的列表中的x)
这有助于更改现有列表,但仍会生成一个新列表。使用生成器来避免不必要的列表创建是否有点不安全?即,
\u列表[:]=(I+1代表我的列表中的I)
。这仍然会创建一个新的列表,如果没有for循环,就不可能在原地创建它。我不认为为什么您认为
\u list[:]=(i+1表示列表中的i)
创建一个新列表?我的意思是,它已经准备好了,但它会暂时为rhs创建一个全新的列表。请看以下答案:我明白你的意思。将临时序列称为列表让我感到困惑。我们真的知道它的类型吗?这不是特定于实现的吗?“添加”在哪里来自?添加应从操作员导入,
从操作员导入添加
>>> <itertools.starmap object at 0x0000028793490AF0> # output by lazy val
>>> 92,94,95,96,                                     # output of iterating above starmap object
>>> [92, 94, 95, 96]                                 # output obtained by casting to list
>>>                   __
>>> # |\ | |  | |\/| |__| \ /
>>> # | \| |__| |  | |     |
>>> [92 94 95 96]                                    # this is numpy.ndarray object
>>> (4,)                                             # shape of array
>>> [92, 94, 95, 96]                                 # this is a list object (doesn't have a shape)
import numpy as np

np.add([1, 2, 3], 1).tolist()
[2, 3, 4]