首页 > 解决方案 > 在列表列表中收集列表的第一项

问题描述

我有一个如下所示的列表:

my_list = [[[(2,3,4,5)]],[[8,2,4,2]],[[9,0,0,0]]]

现在,我想找到一种方法来创建一个新列表zero_list,其元素将是my_list. 那是

zero_list = [2, 8, 9]

如何创建一个for循环来迭代列表的第 0 个元素,其元素本身就是列表?当然,在我的真实示例中,我有一个更大的此类列表,其中包含数千个本身就是列表的条目。

PS我知道这可能是一个简单的问题,但我无法弄清楚。

标签: pythonlistfor-loopiterator

解决方案


对于任何深度列表,您都可以使用此递归函数

def get_first(seq):
    if isinstance(seq, (tuple, list)):
        return get_first(seq[0])
    return seq

def get_zero_list(seq):
    return [get_first(i) for i in seq]



my_list = [[[[[[[[(2,3,4,5)]]]]]]],[[8,2,4,2]],[[9,0,0,0]]]

print(get_zero_list(my_list)) # [2, 8, 9]

my_list = [[[[[[[[(2,3,4,5)]]]]]]],[[[[[[[('first', 3)]]]], 2, 3],2,4,2]],[[([['a', 2]]),0,0,0]]]

print(get_zero_list(my_list)) # [2, 'first', 'a']

推荐阅读