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

113 python loops addition

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

我假设我会使用for循环但不确定如何.

Ned*_*der 128

new_list = [x+1 for x in my_list]
Run Code Online (Sandbox Code Playgroud)

  • 这个讲话解释了它:关于Python名称和值的事实和神话:http://nedbatchelder.com/text/names1.html (6认同)
  • @DaniSpringer因为您没有分配给列表。与执行`lst = [1,2,3]相同;e = lst [0]; e + = 1`。e没有关于它来自何处的任何信息,它只是一个已分配列表元素的变量。给它分配其他东西后,列表“ lst”将不会改变。 (3认同)

Ran*_*Rag 24

>>> mylist = [1,2,3]
>>> [x+1 for x in mylist]
[2, 3, 4]
>>>
Run Code Online (Sandbox Code Playgroud)

list-comprehensions python.


And*_*Cox 21

列表理解的其他答案可能是简单添加的最佳选择,但如果你有一个更复杂的功能,你需要应用于所有元素,那么map可能是一个不错的选择.

在您的示例中,它将是:

>>> map(lambda x:x+1, [1,2,3])
[2,3,4]
Run Code Online (Sandbox Code Playgroud)

  • `map(1 .__ add _,...)`也有效.请注意,您需要在`1`和`.`之间留一个空格,以防止解析器认为它是一个浮点数 (5认同)
  • 我最终用一个列表“容器”封装它,以摆脱地图对象 `list(map(lambda x:x+1, [1,2,3]))` (2认同)

sus*_*mit 12

如果你想使用numpy,还有另一种方法如下

import numpy as np
list1 = [1,2,3]
list1 = list(np.asarray(list1) + 1)
Run Code Online (Sandbox Code Playgroud)


Kra*_*mar 9

>>> [x.__add__(1) for x in [1, 3, 5]]
3: [2, 4, 6]
Run Code Online (Sandbox Code Playgroud)

我的目的是揭示列表中的项是否为整数,它支持各种内置函数.

  • 好的提醒我们迷失在列表理解魔法中. (3认同)

rob*_*ing 7

首先,不要在变量中使用"list"一词.它会影响关键字list.

最好的方法是使用拼接来做到这一点,注意[:]表示拼接:

>>> _list=[1,2,3]
>>> _list[:]=[i+1 for i in _list]
>>> _list
[2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

  • 这对于更改现有列表很有用,但它仍然会生成一个新列表.使用生成器避免不必要的列表创建是否有些不安全?即,`_list [:] =(我在_list中为i + 1)`. (4认同)

mar*_*jay 6

import numpy as np

np.add([1, 2, 3], 1).tolist()
Run Code Online (Sandbox Code Playgroud)

这使

[2, 3, 4]
Run Code Online (Sandbox Code Playgroud)


sat*_*oto 5

Python 2+:

>>> mylist = [1,2,3]
>>> map(lambda x: x + 1, mylist)
[2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

Python 3+:

>>> mylist = [1,2,3]
>>> list(map(lambda x: x + 1, mylist))
[2, 3, 4]
Run Code Online (Sandbox Code Playgroud)