簡體   English   中英

從特定數字中減去列表中的所有元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM