python - 如何解压列表中的列表中的列表

标签 python nested-lists

我有一个如下所示的数据集:

data = [ [[a,b],[a,d]], [[e,f],[g,h]], [[i,j],[k,j]] ]

我想解压它,所以我有:

[[a,a], [e,g], [i,k]] and [[b,d], [f,h], [j,j]]

沿着同一行,有没有一种方法可以获取列表的长度,而不需要根据一个值计算重复项?例如,使用上面的第一个列表,我想计算每个子列表中的列表数量,而不计算第二个值中的重复项。所以我想得到:

[2, 2, 1]

我可以使用以下方法获得 [2, 2, 2] 的结果:

count = [len(i) for i in data]

但由于我无法分离这些值,因此无法单独检查第二个值中的重复项。

最佳答案

>>> d = [ [[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]] ]
>>> list(zip(*[list(zip(*x)) for x in d]))
[((1, 3), (5, 7), (9, 11)), ((2, 4), (6, 8), (10, 12))]

或者用你的例子:

>>> d = [[['a', 'b'], ['a', 'd']], [['e', 'f'], ['g', 'h']], [['i', 'j'], ['k', 'j']]]
>>> list(zip(*[list(zip(*x)) for x in d]))
[(('a', 'a'), ('e', 'g'), ('i', 'k')), (('b', 'd'), ('f', 'h'), ('j', 'j'))]

至于您的计数,由于您只想查看第二个值,因此您可以过滤掉它们,创建一组它们以消除重复值,然后对它们进行计数:

>>> [len(set(x[1] for x in y)) for y in d]
[2, 2, 1]

关于python - 如何解压列表中的列表中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33244171/

相关文章:

python - 计算两个列表增量的快速算法

r - 如何在 R 中将宽嵌套数据 reshape 为长格式?

r - 如何直接从列表中的所有嵌套列表中选择同一列?

python - 如何根据另一个字典查找和替换一个字典中的值

python - gdal.Translate 将批量 asc 转换为 geotiff

Python - 使用 BeautifulSoup4 获取父元素的第一个子元素

C# 嵌套列表条目问题

Python:如何跟踪对象是否仍在 'use' 中?

python - 配对嵌套列表中的元素

python - python 中的嵌套列表和 for 循环程序给了我一个疯狂的结果