2 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
代碼“print(fps[n][3], fps[n+1:][3])”將首先打印主/父列表的元素 [n[ 的子列表的索引 [3] 處的元素。但之后,它將打印剩余的父列表,如代碼所示“[n+1:]”。分號(hào)告訴程序從元素 n+1 開始獲取列表直到末尾。相反,嘗試運(yùn)行嵌套循環(huán)來打印一對(duì)多關(guān)系,例如:
for one in fps:
for many in fps:
print(one[3], many[3])
外循環(huán)將從主列表中獲取一個(gè)元素并將其傳遞給內(nèi)循環(huán)。內(nèi)部循環(huán)將保留從外部循環(huán)傳遞的初始元素,并從主循環(huán)中獲取每個(gè)元素并打印兩者的第三個(gè)元素,直到每個(gè)元素完成為止。然后,外循環(huán)將下一個(gè)元素傳遞給內(nèi)循環(huán),依此類推。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您想要的是這個(gè)列表:
fps = [[0,0,0,1], [0,0,0,2], [0,0,0,3], [0,0,0,4]]
你的預(yù)期輸出應(yīng)該是這樣的:
1 2
1 3
1 4
----------
2 1
2 3
2 4
----------
3 1
3 2
3 4
----------
4 1
4 2
4 3
----------
所以你可以這樣做:
fps = [[0,0,0,1], [0,0,0,2], [0,0,0,3], [0,0,0,4]]
for index_i,i in enumerate(fps):
one_fourth_item = i[3]
for index_j,j in enumerate(fps):
many_fourth_item = j[3]
if index_i != index_j:
print(one_fourth_item, many_fourth_item)
print("----------")
我將嘗試用您在問題()中稱為“第二個(gè)”的代碼來解釋該問題fps[n+1:][3]:
首先,我們將其簡化為fps[n:][3]
該部分fps[n:]將返回源列表的一部分。
所以:
對(duì)于 n == 0 :[[0, 0, 0, 1], [0, 0, 0, 2], [0, 0, 0, 3], [0, 0, 0, 4]]
對(duì)于 n == 1 :[[0, 0, 0, 2], [0, 0, 0, 3], [0, 0, 0, 4]]
對(duì)于 n == 2 :[[0, 0, 0, 3], [0, 0, 0, 4]]
對(duì)于 n == 3 :[[0, 0, 0, 4]]
該部分[3]將返回切片的第三個(gè)元素(來自fps[n:])
因此,對(duì)于 n == 0,fps[n:][3]等于 : [[0, 0, 0, 1], [0, 0, 0, 2], [0, 0, 0, 3], [0, 0, 0, 4]][3],即[0,0,0,4]
問題是,對(duì)于 n == 1(在本例中),最后一個(gè)索引是 2,所以你得到IndexError: list index out of range
因此,您的代碼中至少存在以下兩個(gè)問題:fps[n:][3]您沒有選擇子列表的“第4項(xiàng)”,而是選擇源列表的“第4項(xiàng)”,并且當(dāng)“n”大于最后一項(xiàng)時(shí)你得到的索引IndexError: list index out of range。
對(duì)于+1中的部分fps[n+1:][3],也許您增加是n因?yàn)槟胩^“one”元素,以避免打印“element_1 element_1”或“element_2 element_2”?
添加回答
舉報(bào)