首页 > 解决方案 > 将多行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)

标签: pythonloopsfor-loop

解决方案


试试这个代码:

# 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)

推荐阅读