Python我的函数不断返回一个空列表

时间:2016-12-18 23:09:08

标签: python list

 lists = [['12','saw'],['12','dan'],['16','man']]

 contain = []

 def foo(y, x):
     host = [item[0].lower() for item in y]
     unique_labels = []
     for item, count in collections.Counter(host).items():
        if count == 1:
            unique_labels.append(item)
            x = [item for item in y if item[0] in unique_labels]
     return x

 foo(lists,contain) 
 print contain #returns an empty list instead of a list of lists

嗨,我有这个函数,它接受列表列表并根据特定条件返回一个新的列表列表。但是,当我调用该函数并尝试查看新的列表列表时,它将返回空列表。我不明白为什么'包含'是空的。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

列表contain开始为空,您永远不会对其进行修改,因此在打印时它是空的。函数foo接收contain作为参数x的参数。 Foo不会在参数中添加任何内容。相反,它重复名称 x重新绑定到新列表,然后返回最后一个新列表。您的代码会忽略返回的列表,并将其删除。

如果foo应填写输入参数x,则应该x.appendx.extend次调用从不重新绑定{ {1}}。