2016-04-07 91 views

回答

0

使用list comprehension建立與應用在所有價值變動一個新的列表20:

list_1 = [v - 5 if v > 20 else v for v in list_1] 

表達v - 5 if v > 20 else v使用conditional expression,以產生任一v本身,或v減去5減去如果它大於20

演示:

>>> list_1 = [20, 19, 24, -10, 100] 
>>> [v - 5 if v > 20 else v for v in list_1] 
[20, 19, 19, -10, 95] 

你並不需要事先測試;在列表中查看是否有任何值超過20的測試將需要全部遍歷列表;列表解析會產生沒有所做的更改名單的副本,如果有超過20

沒有值如果必須測試,使用any() functiongenerator expression;當發現一個這樣的價值這至少再中止迭代:

if any(v > 20 for v in list_1): 
    # there is at least one value in list_1 that is greater than 20 
    list_1 = [v - 5 if v > 20 else v for v in list_1] 
0

你從每一個元素它,它小於24大條件爲真應用列表理解的減五位。

>>> list_1 = [1, 22, -15, 16, 17] 
>>> [x - 5 if x > 20 else x for x in list_1] 
[1, 17, -15, 16, 17] 

這相當於,但比快一點:

>>> list_1 = [1, 22, -15, 16, 17] 
>>> result = [] 
>>> for x in list_1: 
...  if x > 20: 
...   x -= 5 
...  result.append(x) 
... 
>>> result 
[1, 17, -15, 16, 17] 
0

您可以使用for環和enumerate做到這一點。

for i, number in enumerate(list_1): 
    if number > 20: 
     list_1[i] = number - 5 

使用列表理解:

list_1 = [i-5 if i > 20 else i for i in list_1] 

如果你想創建一個新的列表:

list_2 = [] 

for number in list_1: 
    if number > 20: 
     list_2.append(number-5) 
    else: 
     list_2.append(number) 
相關問題