python - 将多行for循环更改为单行for循环
问题描述
这是一种通过 for 循环附加到列表的方法:
lst = []
for i in range(5):
lst.append(i)
虽然下面可能看起来更好更好:
lst = [i for i in range(5)]
我试图编写与第二种格式相同的以下代码,但我不断收到错误消息。谁能帮忙?
filtered_list = []
for childList in source_list:
filtered_childList = remove_emptyElements(childList)
if filtered_childList:
filtered_list.append(filtered_childList)
解决方案
试试这个代码:
# one liner as you asked:
filtered_list = [remove_emptyElements(l) for l in source_list if remove_emptyElements(l)]
# but I think that this will be better:
filtered_list = (remove_emptyElements(l) for l in source_list)
filtered_list = [l for l in filtered_list if l]
更新: 要从评论中解决您的问题,您可以使用以下代码段:
sequences_result = []
for sequence in sequences:
for itemset in sequence:
itemset_result = []
for item in itemset.split(","):
itemset_result.append(item.strip())
sequences_result.append(itemset_result)
print(sequences_result)
推荐阅读
- javascript - 是否可以在 Plotly.js 中显示带有烛台提要(高、低、打开、关闭)值的文本的单独工具提示?
- angular - 角度和 PWA
- android - 如何自定义 EXOPlayer 视频广告 UI?
- android - 链接引用失败 - 在 appcompat 中找不到样式属性“@android:attr/textColor”
- node.js - mongodb更新链接与find?
- java - log4j 2 不显示依赖日志
- java - 使用 Keycloak 登录时,Tomcat 有时会响应 403,有时不会
- sql - sql查询中的错误'未能找到从未知到文本的转换函数'
- node.js - 如何修复未定义的猫鼬模式?
- c - 从文本文件读取的程序尝试在文件完成后读取额外的行