Skip to main content
 首页 » 编程设计

python之为什么我不能以这种方式遍历列表列表

2025年05月04日9sharpest

抱歉,我是 python 的新手,但我需要获取 6 个单独的列表并将它们连接起来,使它们类似于一个列表列表。

即列表 A 中的 a1 + 列表 B 中的 b1 + 列表 C 中的 c1 和列表 A + b2 中的 a2 ....等等

应该变成 [[a1,b1,c1], [a2,b2,c2]...]

我试过这个:

combList = [[0]*6]*len(lengthList) 
 
for i in range(len(lengthList)): 
    print i 
    combList[i][0] = posList[i] 
    combList[i][1] = widthList[i] 
    combList[i][2] = heightList[i] 
    combList[i][3] = areaList[i] 
    combList[i][4] = perimList[i] 
    combList[i][5] = lengthList[i] 
    # i++ 
print combList 

然后尝试了一个变体,我在其中附加了:

    for i in range(len(lengthList)): 
        print i 
        combList[i][0].append(posList[i]) 
        combList[i][1].append(widthList[i]) 
        combList[i][2].append(heightList[i]) 
        combList[i][3].append(areaList[i]) 
        combList[i][4].append(perimList[i]) 
        combList[i][5].append(lengthList[i]) 
        # i++ 
    print combList 

所以我有两个问题。

为什么它们都不起作用,因为在我看来它们应该起作用。我不需要把 i++ 放在右下角吗?出于某种原因,它只是无法正常工作,所以我只是在解决问题。

我最终找到了一个解决方案,如下所示,但我只是想了解上面两个代码中发生了什么,这些代码非常失败。

for j in range(len(fNameList)): 
            rows = [fNameList[j], widthList[j], heightList[j], areaList[j], perimeterList[j], lengthList[j]] 
            print rows 
            combList.append(rows) 
        print combList 

请您参考如下方法:

您所做的问题是您正在创建一个包含 6 个对同一事物的引用的列表。

[0]*6 将生成对相同数字(零)的 6 个引用的列表,并且 [[0]*6]*len(lengthList)将生成对同一 [0]*6 列表的引用列表。

我想你想要的功能是zip :

A = ['a1','a2','a3'] 
B = ['b1','b2','b3'] 
C = ['c1','c2','c3'] 
 
print [x for x in zip(A,B,C)] 

给出:

[('a1', 'b1', 'c1'), ('a2', 'b2', 'c2'), ('a3', 'b3', 'c3')] 

所以在你的情况下,这会起作用:

combList = [x for x in zip(fNameList, widthList, heightList, areaList, perimeterList, lengthList)]