4

次のコードを簡略化されたリスト内包表記に再配置するにはどうすればよいですか?

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]
4

1 に答える 1

9

ここを使用する必要があり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]

listPS:変数名として使用しないでください

于 2012-12-27T01:02:20.443 に答える