[英]Subtracting all elements in list from a specific number
我可以使用python从数字中减去列表的操作吗? 例如:
a = [2, 4, 6, 8, 10]
然后我会做1 - a
输出应为:
a = [-1, -3, -5, -7, -9]
a
在我的代码是从.csv文件拉花车的名单,是这样的操作可能在Python?
我是这样创建清单的:
f2 = 'C:/Users/.....csv'
with open(f2,'r') as csvfile:
csvreader = csv.reader(csvfile)
for line in csvreader:
l2.append(list(line))
l2
包含浮点列表。
您可以使用列表理解
>>> values = [2, 4, 6, 8, 10]
>>> [1 - value for value in values]
[-1, -3, -5, -7, -9]
编辑:如果您确实有一个列表列表:
>>> values = [[2, 4, 6], [8, 10, 12]]
>>> [[1 - value for value in sublist]
... for sublist in values]
[[-1, -3, -5], [-7, -9, -11]]
当然,您有很多选择,
number = 1
a = [2, 4, 6, 8, 10]
result = list()
# using for loop
for i in a:
result.append(number-i)
print result
# using list comprehension
result = [number-x for x in a]
print result
# taking functional approach and applying a lambda function on each element
result = map(lambda x: number - x, a)
print result
请让我知道是否您需要对它们的更多解释
我敢打赌,您有一个嵌套列表,像[[1,2,3,4]]一样,而不是[1,2,3,4]。 如果是这种情况,请尝试下一个
result = [1-x for y in a for x in y]
我知道它看起来很可怕,并且如果您发布实际的列表表示形式,也将使其更整洁。 如果重要,则可以用虚拟值填充列表。
一个简单的for循环就可以做到:
atemp = [2,4,6,8,10]
a=[]
for i in atemp:
a.append((1 - i))
出:
[-1, -3, -5, -7, -9]
或列表理解 :
a = [1 - x for x in atemp]
出:
a
[-1, -3, -5, -7, -9]
您可以将map()
与operator.sub
:
map(operator.sub, [1]*len(a), a) # list(map(...)) for Python 3
输出:
>>> import operator
>>>
>>> a = [2, 4, 6, 8, 10]
>>> map(operator.sub, [1]*len(a), a)
[-1, -3, -5, -7, -9]
python理解这里有多个答案。 如果您正在寻找类似Matlab的等效物,则可以使用numpy库来实现:
import numpy as np
list(np.ones(len(a)) - a)
[-1.0, -3.0, -5.0, -7.0, -9.0]
默认情况下,这将返回浮点数。 要获取整数,请使用:
import numpy as np
list(np.ones(len(a), dtype=np.int) - a)
[-1, -3, -5, -7, -9]
您可以使用列表理解。
values = [2, 4, 6, 8, 10]
x = [1 - value for value in values]
print(x)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.