python - 用于列表或子列表中的项目
问题描述
我有一个列表,其中可能包含也可能不包含更多子列表。我需要为列表中的每个项目以及列表中任何子列表中的每个项目运行一段代码。这就是我for
现在的陈述:
for item in mylist:
...
什么是最有效的重写方法,所以item
永远不是子列表之一,并且除了列表中的每个项目之外,代码将为所有子列表中的每个项目运行一次?
解决方案
有两种通用的方法可以做到这一点,或者递归:
def unroll_recursive(lst):
for el in lst:
if isinstance(el, list):
yield from unroll_recursive(el)
else:
yield el
或迭代地
from collections import deque
def unroll_iterative(lst)
q = deque(lst)
while q:
el = q.popleft()
if isinstance(el, list):
q.extend(el)
else:
yield el
推荐阅读
- javascript - 添加带有样式的materializecss芯片-如何获得样式?
- mysql - Go: sql RowsAffected with ON DUPLICATE KEY UPDATE
- python-3.x - 如何修复错误“命令“python setup.py egg_info”在 C:\Users\Dell\AppData\Local\Temp\pip-install-r1jk6xfr\pandas\ 中出现错误代码 1 失败?
- file - TagUI RPA 从浏览器下载文件
- javascript - 如何在 Angular 6 应用程序中使用带有 CKEditor 4 的图像上传插件?
- c# - 使用子字符串获取特定间隔
- xml - 如何在 Angular 4、5、6 中读取 XML 文件并将输出作为字符串?
- laravel-5 - 如何清除 eloquent/mysql 中的主键 ID 生成器?
- regex - Mod重写前向空目录并将路径转换为参数
- python-3.x - 如何对视频中的速度轨迹进行基于密度的聚类?