oct*_*bus 5 python list-comprehension list filter duplicates
我有一个解决方法来解决以下问题.该解决方法将是一个for循环,其中包含一个包含在输出中的测试,如下所示:
#!/usr/bin/env python
def rem_dup(dup_list):
reduced_list = []
for val in dup_list:
if val in reduced_list:
continue
else:
reduced_list.append(val)
return reduced_list
Run Code Online (Sandbox Code Playgroud)
我问下面的问题,因为我很想知道是否有列表理解解决方案.
鉴于以下数据:
reduced_vals = []
vals = [1, 2, 3, 3, 2, 2, 4, 5, 5, 0, 0]
Run Code Online (Sandbox Code Playgroud)
为什么
reduced_vals = = [x for x in vals if x not in reduced_vals]
Run Code Online (Sandbox Code Playgroud)
产生相同的清单?
>>> reduced_vals
[1, 2, 3, 3, 2, 2, 4, 5, 5, 0, 0]
Run Code Online (Sandbox Code Playgroud)
我认为它与检查output(reduced_vals
)作为列表赋值的一部分有关.我很好奇,但确切的原因.
谢谢.
列表推导创建新列表,同时reduced_vals
在评估列表推导期间始终指向空列表.
Python中赋值的语义是:评估右侧并将结果对象绑定到左侧的名称.对裸名称的赋值永远不会改变任何对象.
顺便说一下,您应该以有效的方式使用set()
或collections.OrderedDict.fromkeys()
删除重复项(取决于您是否需要保留顺序).
归档时间: |
|
查看次数: |
466 次 |
最近记录: |