gpt4 book ai didi

python - 如何从具有列表理解的元组列表的单个列表中实现两个单独的列表列表?

转载 作者:太空狗 更新时间:2023-10-30 02:09:50 25 4
gpt4 key购买 nike

比如说,我有一个如下所示的两个 2D 列表:

[[('a', '1'), ('a', '12'), ('a', '3')], [('b', '21'), ('b', '31')], [ ('c', '11')]]

我想要实现的输出是:

Output_list=[['1','12','3'], ['21','31'], ['11']]

这里的主要复杂性是我想通过单个列表推导 来实现输出。

我的一个尝试是:

print [a for innerList in fin_list1 for a,b in innerList]

输出:

['1', '12', '3', '21', '31', '11']

但是,如您所见,虽然我已成功检索每个元组的第二个元素,但我未能保留我的内部列表结构。

最佳答案

我们从这里开始:

>>> l = [[('a', '1'), ('a', '12'), ('a', '3')], [('b', '21'), ('b', '31')], [ ('c', '11')]]

最初你试图按照这些思路做一些事情:

>>> [y for sublist in l for x, y in sublist]
['1', '12', '3', '21', '31', '11']

这里的错误是这个列表理解是一维的,即所有的值都只是整数而不是列表本身

为了使它成为二维的,我们的值需要是列表。最简单的方法是让我们的值表达式成为一个嵌套列表理解,它迭代原始列表的子列表的元素:

>>> [[y for x, y in sublist] for sublist in l]
[['1', '12', '3'], ['21', '31'], ['11']]

从技术上讲,这是两个列表理解,但显然列表理解可以用 map 代替,如 Roberto 的回答中所述。

关于python - 如何从具有列表理解的元组列表的单个列表中实现两个单独的列表列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33483388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com