我基本上試圖讓我的頭周圍使用這個基本的代碼的列表理解。我試着通過列表項的值複製列表項:重複列表項的變量次數與列表理解
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]
我只是不能似乎得到我的頭左右,爲什麼我得到的第二個例子錯誤的輸出。有人可以解釋這裏有什麼問題。謝謝。
您的第一個理解'[i for _ in range(i)for i in y]'會給執行帶來錯誤(即'name'i'未定義')。在嵌套列表解析中,循環從外部進入。 – Rahul
@Rahul它不會引發錯誤,因爲前面幾行中的for循環會泄漏'i'的值。 – Selcuk
另請參閱http://stackoverflow.com/a/17657966/4014959 –