それらはリスト内包と呼ばれます。基本的な構文は次のとおりです(構文の一部としてではなく、括弧を使用して単語をグループ化します)。
[(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]
リストを作成した後でリストを保持する必要がない場合は、代わりにジェネレータ式を使用してください。(ジェネレータ式とリスト内包表記の構文は同じです。)