それらはリスト内包と呼ばれます。基本的な構文は次のとおりです(構文の一部としてではなく、括弧を使用して単語をグループ化します)。
[(an expression involving x) for x in someList if (some condition)]
評価がtrueの場合condition
、結果のリストには。が含まれます(expression involving x)
。したがって、たとえば、次のリスト内包表記では、これを使用して、結果のリストに文字列のみを含めます。
>>> myList = [1,"hello",5.4,"world"]
>>> [elem for elem in myList if type(elem)==str]
['hello', 'world']
このif
部分はオプションであり、expression involving x
単純なものにすることができることに注意してくださいx
(別のリストから要素を除外する場合によく使用されます)。
実際、は実際にexpression involving x
はまったく含まれている必要はありませんx
。たとえば、何らかの理由で0
自分の名前である限りのリストが必要な場合は、次のように実行できます。
>>> [0 for letter in "Matthew"]
[0, 0, 0, 0, 0, 0, 0]
リストを作成した後でリストを保持する必要がない場合は、代わりにジェネレータ式を使用してください。(ジェネレータ式とリスト内包表記の構文は同じです。)