私は基本的にこの基本的なコードでリストの理解度を使用して頭を上げようとしています。イムは、リスト項目の値によって、リスト項目を複製しようとしている:リストの項目をリスト内包で複数回複製する
y = [1, 2, 0, 1]
x = []
for i in y:
for j in range(i):
x.append(i)
# Desired output
>>> [1, 2, 2, 1]
x = [i for _ in range(i) for i in y]
# Wrong output
>>> [1, 2, 0, 1]
# Right output
x = [j for j in y for _ in range(j)]
>>> [1, 2, 2, 1]
私はちょうど私が第二の例のために間違った出力を得る理由のまわりで私の頭を取得するように見える傾けます。誰かがここで何が間違っているのか説明できますか?ありがとう。
あなたの最初の理解は、実行中にエラーを出します(つまり、 'name 'i'が定義されていません)。ネストされたリスト内包表記では、ループは外側から移動します。 – Rahul
@Rahul前の行の 'for'ループが' i'の値をリークするため、このエラーは発生しません。 – Selcuk
http://stackoverflow.com/a/17657966/4014959 –