以下のリスト内包表記で、ここでprint(x)
が有効でない(SyntaxError
)のはなぜですか?
my_list=[1,2,3]
[print(my_item) for my_item in my_list]
対照的に、以下は構文エラーを与えません:
def my_func(x):
print(x)
[my_func(my_item) for my_item in my_list]
Printは関数ではないため、ステートメントであり、式に含めることはできません。これは、通常のPython 2構文を使用すると、より明確になります。
my_list=[1,2,3]
[print my_item for my_item in my_list]
それは正しくありません。 :) my_itemの周りの括弧はあなたをだまします。
これは、Python 3、btw、where print is関数で変更され、コードが正常に機能します。
リスト内包表記は、リストを作成するように設計されています。そのため、内部でprintを使用すると、print()を使用するか、2.7または3.xで印刷するかに関係なく、エラーが発生します。コード
[my_item for my_item in my_list]
タイプリストの新しいオブジェクトを作成します。
print [my_item for my_item in my_list]
この新しいリスト全体を印刷します
参照: ここ
print
は関数ではないため、これは構文エラーです。それは声明です。あなたは明らかにprint
からの戻り値を気にしないので(それがないので)、通常のループを書いてください:
for my_item in my_list:
print my_item
python 3で印刷すると、その使用方法がより明確になります。
リスト内包の角括弧は、出力が実際にリストであることを示します。 L1=['a','ab','abc'] print([item for item in L1])
これでうまくいくはずです。