メインコンテンツにスキップ
モジュール 6 · レッスン 4 / 4コース内の 24/36~12 min
モジュールのレッスン (4/4)

必須の itertools

Python は多くの反復ツールを公開しています。一部は 組み込み (常に 利用可能)、その他は標準の itertools モジュールに存在します 図書館。最も重要なものは次のとおりです。

enumerate: インデックス + 値

ループ中にインデックスと要素の両方が必要な場合:

Python
for i, parola in enumerate(["a", "b", "c"]):
    print(i, parola)
# 0 a
# 1 b
# 2 c

# parte da un altro numero:
for i, parola in enumerate(["a", "b", "c"], start=1):
    print(i, parola)

zip: 並列で反復します

複数の反復可能な要素を要素ごとに結合します。

Python
nomi = ["Ada", "Linus", "Grace"]
eta = [36, 54, 85]

for n, e in zip(nomi, eta):
    print(f"{n} ha {e} anni")

zip は 最短 の反復可能部分で停止します。 「長い」zip を使用する場合 itertools.zip_longest。

2 つの並列リストから dict を構築します。

Python
dict(zip(nomi, eta))
# {'Ada': 36, 'Linus': 54, 'Grace': 85}

itertools.chain: イテラブルを連結します

Python
from itertools import chain
list(chain([1, 2], [3, 4], [5]))
# [1, 2, 3, 4, 5]

中間リストを作成しない: ファイル、ジェネレーターなどに便利です。

itertools.count および repeat: 無限反復子

Python
from itertools import count, repeat

# count(start, step) — interi crescenti infiniti
for i in count(10, 2):
    if i > 20: break
    print(i)
# 10, 12, 14, 16, 18, 20

# repeat(x, n) — ripete lo stesso valore n volte (o all'infinito senza n)
list(repeat("ok", 3))   # ['ok', 'ok', 'ok']

itertools.combinations

指定された要素のすべての組み合わせ (繰り返しなし、順序に依存しない) 長さ:

Python
from itertools import combinations
list(combinations([1, 2, 3, 4], 2))
# [(1,2), (1,3), (1,4), (2,3), (2,4), (3,4)]

注文されたバリアント: permutations。繰り返しのあるバリエーション: combinations_with_replacement および product。

ディクショナリおよび不均衡な反復可能オブジェクトの場合は zip()

zip() 関数は、反復可能な最短の入力がなくなるとすぐに停止します。要素をペアにして余分な値を保持したい場合 (None のようなデフォルト値を入力する)、itertools モジュールの zip_longest() を使用できます。さらに、zip の結果を dict() に直接渡して、キーと値のマップを即座に構築することができます。

試してみてください

運動#python.m6.l4.e1
試行回数: 0読み込み中…

並列リスト `countries = ['Italia', 'Francia', 'Spagna']` と `capitals = ['Roma', 'Parigi', 'Madrid']` を指定して、辞書 {country: Capital} として `mapping` を構築します。 「マッピング」を評価します。

エディターを読み込み中…
ヒントを表示

dict(zip(国、首都))

3 回の試行後に解決策が利用可能になります

復習演習

運動#python.m6.l4.e2
試行回数: 0読み込み中…

`words = ['ciao', 'mondo', 'python']` とすると、i=1 から始まるタプル (i, word) のリストとして `enumerated_items` を構築します。 `enumerated_items` を評価します。

エディターを読み込み中…
ヒントを表示

enumerate(words, start=1) → (i, value) タプル。

3 回の試行後に解決策が利用可能になります

追加の課題

運動#python.m6.l4.e3
試行回数: 0読み込み中…

Given two lists `keys = ['a', 'b', 'c']` and `values = [10, 20, 30]`, use `zip` to pair them and convert the result into a dictionary. Store the resulting dictionary in `my_dict` and evaluate it.

エディターを読み込み中…
ヒントを表示

dict(zip(keys, value)) を使用して、それを my_dict に割り当てます。

3 回の試行後に解決策が利用可能になります