2016-01-08 25 views
-3

我想知道是否有一個Python的方式做這樣的事情:最快的方式與條件蟒蛇值

a=[1,2,3,4,5] 

for e in a: 

    print e+=[100 if e<4 else 1] 

這應該打印的數字: 101,102,103,5,6

在此先感謝

回答

4

列表理解是單向的:

a = [1,2,3,4,5] 

b = [x+100 if x < 4 else x+1 for x in a] 

[100, 102, 103, 5, 6] 

或者像thefourtheye建議:現在

b = [x + (100 if x < 4 else 1) for x in a] 

,爲你的代碼,這是修復:

for e in a: 
    print e+(100 if e<4 else 1) 

您還可以使用map做到這一點:

>>> map(lambda s: s+(100 if s < 4 else 1), a) 
[101, 102, 103, 5, 6] 

請記住,如果你在Python3中,map返回一個生成器,所以你必須要list它:

>>> list(map(lambda s: s+(100 if s < 4 else 1), a)) 
0

嘗試這個

>>> a = [1,2,3,4,5] 
>>> b = [x+100 if x < 4 else x+1 for x in a] 
>>> print b 
[101, 102, 103, 5, 6] 
>>> 
1

要修改列表in place,你需要做這樣的事情:

a = [1, 2, 3, 4, 5] 

for i, e in enumerate(a): 
    a[i] += 100 if e < 4 else 1 

print(a) # -> [101, 102, 103, 5, 6]