从Python列表中的每个数字中减去一个值?


84

我有一个清单

 a = [49, 51, 53, 56]

如何从列表中的每个整数值中减去13?

Answers:


146

具有列表理解

a = [x - 13 for x in a]

2
通过def minus13(a):在上面的行上缩进一个级别。
伊格纳西奥·巴斯克斯

8
为什么a[:]在lhs而不是仅仅分配给a?不a[:]创建列表的副本吗?
istruble


4
什么应该做的是,从列表中理解的价值应该由函数返回,调用者应决定是否适当,以取代现有的序列。
伊格纳西奥·巴斯克斯

1
@istruble:直接分配给a也可以。因此a = [x - 13 for x in a]也可以正常工作,并且不会造成混乱。
Lennart Regebro

71

如果您经常处理数字,则可能需要看看NumPy。它使您可以直接在数值数组上执行各种运算。例如:

>>> import numpy
>>> array = numpy.array([49, 51, 53, 56])
>>> array - 13
array([36, 38, 40, 43])

1
我做了一个快速测试,它返回一个新数组,而原始数组保持不变。
弗朗索瓦·


5

澄清由于评论中的问题而已发布的解决方案

import numpy

array = numpy.array([49, 51, 53, 56])
array = array - 13

将输出:

数组([36,38,40,43])


3

这将起作用:

for i in range(len(a)):
  a[i] -= 13

4
列表理解解决方案更具Python风格。您可能会喜欢它们。 docs.python.org/tutorial/...
istruble

谁删除了我的评论?-我看不出计算a的长度的意义。进行简单的计算。
jaycodez 2011年

2
如果要以这种方式表示算法,则计数是必需的,以使索引变量(i)遍历所有可能的索引值。需要使用此索引变量来突变列表中的每个元素。
圣诞老人
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.