我想知道是否有一個Python的方式做這樣的事情:最快的方式與條件蟒蛇值
a=[1,2,3,4,5]
for e in a:
print e+=[100 if e<4 else 1]
這應該打印的數字: 101,102,103,5,6
在此先感謝
我想知道是否有一個Python的方式做這樣的事情:最快的方式與條件蟒蛇值
a=[1,2,3,4,5]
for e in a:
print e+=[100 if e<4 else 1]
這應該打印的數字: 101,102,103,5,6
在此先感謝
列表理解是單向的:
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))
嘗試這個
>>> 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]
>>>
要修改列表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]