从特定数字中减去列表中的所有元素

时间:2017-01-11 21:46:55

标签: python

我可以使用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包含浮动列表。

6 个答案:

答案 0 :(得分:2)

您可以使用列表理解

>>> 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]]

答案 1 :(得分:1)

当然,你有很多选择,

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]

我知道它看起来很糟糕,如果您发布实际的列表表示,它将有助于使其更清晰。如果重要,您可以使用虚拟值填充列表。

答案 2 :(得分:1)

一个简单的for循环就可以了:

atemp = [2,4,6,8,10]
a=[]
for i in atemp:
    a.append((1 - i))

输出:

[-1, -3, -5, -7, -9]

list comprehension

a = [1 - x for x in atemp]

输出:

a

[-1, -3, -5, -7, -9]

答案 3 :(得分:0)

您可以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]

答案 4 :(得分:0)

这里有多个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]

答案 5 :(得分:0)

您可以使用列表理解。

values = [2, 4, 6, 8, 10]
x = [1 - value for value in values]
print(x)