使用条件python修改列表值的最快方法

时间:2016-01-08 11:10:55

标签: python python-2.7

我想知道在python中是否有办法做类似的事情:

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

for e in a:

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

这应该打印数字: 101,102,103,5,6

提前致谢

3 个答案:

答案 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]
>>>