社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

在Python中遍历列表列表列表

devman3211 • 3 年前 • 1404 次点击  

我正在尝试用python迭代一个3-D列表(不是numpy,但如果这样做更容易的话,我愿意转换成numpy数组),从这样的列表中:

a = [[[0, 0], [3, 0]], [[1, 0], [4, 0]], [[2, 0], [6, 0]] ]

我可以得到输出

[0,0]
[1,0]
[2,0]
[3,0]
[4,0]
[6,0]

我不知道如何让它像这样迭代。。。

我的代码:

a = [[[0, 0], [0, 0]], [[1, 0], [0, 0]], [[2, 0], [0, 0]] ]
for i in range(len(a)):
    for z in range(len(a[i])):
        print(a[i][z])

我尝试过不同的方法,但似乎无法得到这个输出。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132007
 
1404 次点击  
文章 [ 4 ]  |  最新文章 3 年前
lemon
Reply   •   1 楼
lemon    3 年前

这是一种正确的迭代方式,就像你正在尝试的那样:

a = [[[0, 0], [0, 0]], [[1, 0], [0, 0]], [[2, 0], [0, 0]] ]
for i in range(len(a)):
    for z in range(len(a[i])):
        print((a[i])[z])

如果对您来说更简单,请尝试迭代列表中的元素,而不是使用索引来迭代列表的长度:

a = [[[0, 0], [0, 0]], [[1, 0], [0, 0]], [[2, 0], [0, 0]] ]
for a1 in a:
    for a2 in a1:
        print(a2)
Rishabh Mishra
Reply   •   2 楼
Rishabh Mishra    3 年前

如果只想按列遍历元素,可以将列表转换为numpy数组,然后堆叠列并打印:

import numpy as np
a = [[[0, 0], [3, 0]], [[1, 0], [4, 0]], [[2, 0], [6, 0]] ]
arr = np.stack(np.array(a), axis=1)

for p in arr:
    for x in p:
        print(x)

下面的解决方案基于之前的假设,即根据排序顺序打印子列表中的每个项目: 可以使用itertools将三维列表展平为二维列表,然后根据每个子列表中的第一个元素对二维列表进行排序。然后打印排序后的列表。

import itertools
a = [[[0, 0], [3, 0]],[[1, 0], [4, 0]],[[2, 0], [6, 0]]]
flat_list = list(itertools.chain(*a))
sorted_list = sorted(flat_list, key=lambda x: x[0])

for i in sorted_list:
    print(i)
Andrej Kesely
Reply   •   3 楼
Andrej Kesely    3 年前

尝试:

print(*[i for v in zip(*a) for i in v], sep="\n")

印刷品:

[0, 0]
[1, 0]
[2, 0]
[3, 0]
[4, 0]
[6, 0]
enke
Reply   •   4 楼
enke    3 年前

我认为您需要从每个子列表中连续打印第n个子列表。你可以打开行李拉上拉链 a 要获得元组的iterable,请打印其中的每一对:

for tpl in zip(*a):
    for pair in tpl:
        print(pair)
        

输出:

[0, 0]
[1, 0]
[2, 0]
[3, 0]
[4, 0]
[6, 0]