Python-リスト内包
リスト内包
リスト内包表記は、既存のリストの値に基づいて新しいリストを作成する場合に、より短い構文を提供します。
例:
果物のリストに基づいて、名前に「a」という文字が含まれる果物のみを含む新しいリストが必要です。
リスト内包表記がないfor
と、条件付きテストを含むステートメントを作成する必要があります。
例
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
リスト内包表記を使用すると、1行のコードですべてを実行できます。
例
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x
for x in fruits if "a" in x]
print(newlist)
構文
newlist = [expression for item in iterable if condition == True]
戻り値は新しいリストであり、古いリストは変更されません。
調子
条件は、に評価されるアイテムのみを受け入れるフィルターのようなもの
ですTrue
。
例
「アップル」ではないアイテムのみを受け入れます。
newlist = [x for x in fruits if x != "apple"]
状態
if x != "apple"True
「apple」以外のすべての要素
が返され、新しいリストに「apple」を除くすべての果物が含まれるようになります。
条件はオプションであり、省略できます。
例
if
ステートメントなし:
newlist = [x for x in fruits]
反復可能
iterableは、リスト、タプル、セットなど、任意の反復可能なオブジェクトにすることができます。
例
このrange()
関数を使用して、反復可能オブジェクトを作成できます。
newlist = [x for x in range(10)]
同じ例ですが、条件があります。
例
5未満の数字のみを受け入れます。
newlist = [x for x in range(10) if x < 5]
表現
式は反復の現在のアイテムですが、結果でもあり、新しいリストのリストアイテムのようになる前に操作できます。
例
新しいリストの値を大文字に設定します。
newlist = [x.upper()
for x in fruits]
結果は好きなように設定できます。
例
新しいリストのすべての値を「hello」に設定します。
newlist = ['hello' for x in fruits]
式には、フィルターのようにではなく、結果を操作する方法として条件を含めることもできます。
例
「バナナ」の代わりに「オレンジ」を返します。
newlist = [x if x != "banana" else "orange"
for x in fruits]
上記の例の式は次のように述べています。
「バナナでない場合は返品、バナナの場合はオレンジを返品してください」。