2011-02-07 148 views
38

我仍在阅读Python 3.1.3教程,并遇到以下问题:从Python中列表中的每个数字减去一个值?

如何从一组数字中删除值?

# A list with a group of values 
a = [49, 51, 53, 56] 

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

# Attempting to minus 13 from this list - FAIL! 
(a[:] = a[:] - 13) 

回答

70

随着列表的理解。

a[:] = [x - 13 for x in a] 
+0

谢谢你,好工作。 :) 你如何快速把它放入函数? – Josh 2011-02-07 05:59:29

+1

通过在上面的行上加上`def minus13(a):`并缩进一个级别。 – 2011-02-07 06:00:41

+4

为什么'l [:]`在lhs上而不是仅仅指定回`a`?不`a [:]`创建列表的副本? – istruble 2011-02-07 06:06:23

2

这将工作:

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

如果你跟数字打交道很多,你可能想看看NumPy。它可以让你直接对数值数组执行各种操作。例如:

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

可以使用map()功能:

a = list(map(lambda x: x - 13, a)) 
相关问题