如何遍历子列表的元素

时间:2019-09-22 13:54:00

标签: python-3.x nested-loops

希望您可以帮我这个忙

previous=[[0, 0, 1, 1], [0, 0, 0, 0], [0, 0, 1, 2], [0, 0, 1, 2], [0, 0, 1, 1], [0, 1, 1, 2], [0, 1, 1, 1], [0, 0, 1, 2], [0, 1, 1, 2], [0, 0, 0, 0]]

type(previous)
Out[67]: list

previous[0][-1]
Out[66]: 1

previous[1][-1]
Out[65]: 0

for p in previous:
    print(p)

[0, 0, 1, 1]
[0, 0, 0, 0]
[0, 0, 1, 2]
[0, 0, 1, 2]
[0, 0, 1, 1]
[0, 1, 1, 2]
[0, 1, 1, 1]
[0, 0, 1, 2]
[0, 1, 1, 2]
[0, 0, 0, 0]

我的问题,我需要从子列表中的每个元素中获取3值,并将其附加以创建另一个列表。

结果应为:

[1,0,1,1,1,1,1,1,1,0]

我尝试过但没有成功:

mylist=[]
for p in previous:
    for x in p:
        mylist.append(p[x][-1])
        print(mylist)

和:

for p in previous:
    for x in p:
        print ([p[x]])

2 个答案:

答案 0 :(得分:2)

p是子列表,您无需再次使用for x in p:遍历它即可获取第三个元素(因此,当您尝试为该索引编制索引时,代码实际上会引发IndexError子列表p(如果x超出范围,并且在尝试使用TypeErrorp[x][-1]处索引数字时将引发p[x]),仍然, p[-1]是最后一个元素(在您的情况下是第四个元素),您应该使用正索引:

p[2]  #  the third element

或者使用负索引来获取倒数第二个元素:

p[-2]

但是如果列表应该再增加一点,则正索引会更好,因为它不会受到添加到列表末尾的元素的影响。

您也可以编写列表推导内容,而不是for循环+ append

mylist = [p[2] for p in previous]

print(mylist)

输出:

[1, 0, 1, 1, 1, 1, 1, 1, 1, 0]

答案 1 :(得分:1)

循环p中的子列表。通过循环p的第一次是

[0, 0, 1, 1]

Python会从零开始编制索引( first 元素始终位于索引0)。因此p[0]是第一个元素。第三个元素是p[2]

如果使用负索引,-1表示最后一个元素,-2表示倒数第二个或倒数第二个元素。

要修改解决方案以使其正常工作,可以删除内部循环。不用了您已经有了子列表。

mylist=[]
for p in previous:
    mylist.append(p[2])

print(mylist)