下面的代碼片段是從代碼跟蹤演習。列表枚舉在Python
import copy
def ct1(A, B, C, D, E):
result = [ ]
# 0 1 2 3 4 5 6 7 8 9
pairs = [(A,B),(A,C),(A,D),(A,E),(B,C),(B,D),(B,E),(C,D),(C,E),(D,E)]
for i,pair in enumerate(pairs):
(L, M) = pair
if (L is M): result.append(i)
elif (L == M): result.append(10*i)
return result
def f(L):
L[0] += 1
return L
A = list(range(3))
B = copy.copy(A)
C, D, E = A, B+[ ], f(B)
print(ct1(A, B, C, D, E))
我很困惑的部分是for循環中使用的枚舉。從enumerate()的文檔,它看起來像pair
應該有有這樣的值:迭代,這意味着'L'
應通過([0, 1, 2], [0, 1, 2])
通過7
和'M'
,元組([0, 1, 2], [1, 1, 2])
具有0
值時
(0, ([0, 1, 2], [1, 1, 2]))
(1, ([0, 1, 2], [0, 1, 2]))
(2, ([0, 1, 2], [0, 1, 2]))
(3, ([0, 1, 2], [1, 1, 2]))
(4, ([1, 1, 2], [0, 1, 2]))
(5, ([1, 1, 2], [0, 1, 2]))
(6, ([1, 1, 2], [1, 1, 2]))
(7, ([0, 1, 2], [0, 1, 2]))
。但是,當我通過調試器運行此代碼時,我看到L
和M
都是列表。例如,當i = 0, L = [0, 1, 2] and M = [1, 1, 2]
等等。有人可以解釋發生了什麼嗎?
上'unpacking'讀了起來,從'枚舉元組()'已經被解壓到'i'和'pair'。你可以嵌套解包,所以你可以寫'for i,(L,M)枚舉(對):'而不需要'pair'。 – AChampion
現在對我有意義!謝謝你的幫助。 – theguyoverthere