python - 使用 itertools 迭代具有不同大小的嵌套列表组合的列表
问题描述
可以说我有以下列表。
strange_list = [3, 4, 5, [6, 7, 8, [9, 0, 9], 4, 34, 'hello'], [[[['wtf']]]]]
如何使用 itertools 模块中的某些功能获得以下列表。
chain_strange_list = [3, 4, 5, 6, 7, 8, 9, 0, 9, 4, 34, 'hello', 'wtf']
解决方案
我们可以制作一个简单的递归函数来处理这个问题,而不需要任何导入。
def unpack(obj):
if not isinstance(obj, list):
yield obj
else:
for item in obj:
yield from unpack(item)
list(unpack(strange_list))
>> [3, 4, 5, 6, 7, 8, 9, 0, 9, 4, 34, 'hello', 'wtf']
请记住,这里的基本条件很简单,因为它检查迭代中的当前项目是否是列表。对于更复杂的数据类型,您必须修改此条件以满足您的需要。
推荐阅读
- reactjs - React Tiny.MCE - 如何在 React 上创建自定义插件
- c++ - 通过 C++ 程序将命令传递到 shell 脚本
- php - 文件不是在 PHP 中创建的?
- r - 通过多个特定字符拉取大数据子集
- json - 接受数字作为请求正文中的字符串?
- flutter - Flutter 如何导入 backendless_sdk 消息模块?
- sql - 使用 ADO 从 MS 访问 Excel 中检索最后插入的最大记录
- sql - 是否可以在每天的特定时间为布尔语句设置一个计时器,从真到假,从假到真?
- java - 解决 Maven 中央存储库中的损坏源
- python - 如何使用 python 请求将文本提交到 textarea?