Compact Python for()循环

Bif*_*iff 3 python

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

for i in xrange(len(list)):
    if list[i].startswith('c'):
        list[i] = prefix + list[i]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下但它似乎没有工作:

[prefix + list[i] for i in xrange(len(list)) if list[i].startswith('c')]
Run Code Online (Sandbox Code Playgroud)

以下内容将我抛弃:

list[i] = prefix + list[i]
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 8

你需要使用ternary operator这里:

[prefix + i if i.startswith('c') else i for i in my_list]
Run Code Online (Sandbox Code Playgroud)

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

您可以简单地将列表推导重新设置my_list为实现:

my_list=[prefix + i if i.startswith('c') else i for i in my_list]
Run Code Online (Sandbox Code Playgroud)

PS:不要list用作变量名