我想知道在python中是否有办法做类似的事情:
a=[1,2,3,4,5]
for e in a:
print e+=[100 if e<4 else 1]
这应该打印数字: 101,102,103,5,6
提前致谢
答案 0 :(得分: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))
答案 1 :(得分: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]
答案 2 :(得分: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]
>>>