[英]Nested for loop in 'lists' and 'iterators'
我有這兩個清單
l1 = [1,2,3]
l2 = [10,20,30]
我使用這個嵌套的 for 循環來訪問所有可能的對:
for a in l1:
for b in l2:
print(a,b)
我得到以下預期結果:
1 10
1 20
1 30
2 10
2 20
2 30
3 10
3 20
3 30
但是,如果我將 l1 和 l2 轉換為迭代器,我會得到不同的結果,並且我無法訪問所有對:
l1=iter(l1)
l2=iter(l2)
for a in l1:
for b in l2:
print(a,b)
1 10
1 20
1 30
我無法理解這兩個代碼片段之間的區別。 為什么迭代器會產生這個結果?
l2=iter(l2)
這從l2
創建了一個迭代器。 一個迭代器只能迭代一次。 之后,interator就完成了。 如果您想再次迭代l2
,則需要從中創建另一個迭代器。
for a in l1:
for b in l2:
print(a,b)
這將嘗試迭代l2
- 對l1
中的每個項目進行一次。 如果l1
中有超過 1 個項目,那將不起作用 - 因為l2
迭代器在第一次迭代后已經用盡。
所以你需要這樣的東西:
l1 = iter(l1)
for a in l1:
l2_iter = iter(l2)
for b in l2_iter:
print(a,b)
這會做你所期望的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.