1

単純なクラスがある場合

class test(object):
    def __init__(self):
        self.prop=False

なぜこれが機能しないのですか

l=[a,b,c]
[c.prop=True for c in l]

for c in l:
    print c.prop

無効な構文を示しています。しかし、通常のループは機能します

for c in l:
     c.prop=True

ここでリストの理解が失敗する理由は何ですか?

4

2 に答える 2

5

Python のリスト内包表記は、リストを作成するために作成されています。内包表記は iterable をループし、式を評価します - 構築中のリストに式の結果を追加します。

これは明らかにステートメントでは機能しません-ステートメントは何に評価されますか? 彼らはどのような値を返しますか? このため、Python はリストを作成できませんSyntaxError。これは、三項演算子などにも当てはまります。

リストを作成する必要がない場合、またはリストを反復処理する操作を実行する場合は、forループを使用します。

于 2013-05-20T11:38:58.493 に答える
4

これは、リスト内包表記は変更を意図したものではなく、Pythonic とは見なされないためです。リスト内包表記で何かを変更したい場合は、for代わりにループを使用してください。

于 2013-05-20T11:29:58.057 に答える