python - 在列表列表中收集列表的第一项
问题描述
我有一个如下所示的列表:
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我知道这可能是一个简单的问题,但我无法弄清楚。
解决方案
对于任何深度列表,您都可以使用此递归函数
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']
推荐阅读
- java - 使用java 8流在地图地图内迭代列表
- json - 想要在 bash 脚本中解析 JSON,但出现“python:无法执行二进制文件”错误
- haskell - Haskell 中的 Lambda
- vue.js - 点击工具提示内容 vuetify
- javascript - XHR GET 请求在后台脚本中失败 - Chrome 扩展开发
- html - HTML表格的边框问题
- javascript - 问题:在 Meteor 服务器启动后多次启动 cron 例程
- python - self.sendClickEvent(cev[0]): mouseReleaseEvent 时出错
- sql - 基于模式重命名变量的 sqldf R 代码
- c++ - 当我在并行合并排序中增加向量的大小时出现分段错误