Compact Python for()循环

时间:2012-12-27 01:00:05

标签: python

如何将以下代码重新排列为简化列表理解?

for i in xrange(len(list)):
    if list[i].startswith('c'):
        list[i] = prefix + list[i]

我尝试了以下操作,但它似乎不起作用:

[prefix + list[i] for i in xrange(len(list)) if list[i].startswith('c')]

以下内容让我失望:

list[i] = prefix + list[i]

1 个答案:

答案 0 :(得分:8)

您需要使用此处的ternary operator

[prefix + i if i.startswith('c') else i for i in my_list]

请注意,这不会更改原始my_list,只会返回一个新列表。

您可以简单地将列表理解设置回my_list以实现:

my_list=[prefix + i if i.startswith('c') else i for i in my_list]

PS:不要将list用作变量名称