首页 > 解决方案 > 在循环中对列表列表应用条件并获取列表列表作为输出

问题描述

这段代码可以完成这项工作,但我不明白它是如何工作的。因为我每次在到达 list_output 之前都会重置 list_temp 的内容。为什么list_output最后不为空?

顺便说一句,有什么更好的编码方式?

list_input = [['url1','1. a','b','c'],['url2','1. d','f','g']]

list_output = []
counter = -1

for i in list_input:
    list_temp = []
    counter = counter + 1
    list_output.append(list_temp)

    for j in list_input[counter]:
        if 'url' in j:
            list_temp.append(j)
        elif '1.' in j:    
            list_temp.append(j)

print(list_output)

>>>
[['url1', '1. a'], ['url2', '1. d']]

标签: pythonlistloops

解决方案


list_temp = []

这条线做了两件事:

  • 创建一个空list对象(我们称之为对象)
  • 使名称list_temp指向该对象(我们称其为名称)
list_output.append(list_temp)

此行将对象附加到输出列表。

下次发生这种情况时:

list_temp = []

分配了一个对象,并将名称list_temp改为指向这个新对象。之前创建的另一个对象保持不变。由于该对象已添加到输出列表中,因此它保留在那里。

希望这能消除混乱。list_temp&[]不是一回事。


推荐阅读