【发布时间】:2018-03-23 11:53:21
【问题描述】:
我想从嵌套列表中提取唯一数据,见下文。我实现了两种方式。第一个效果很好,但第二个失败了。计算时new_data 是否为空?我该如何解决?
data = [
['a', 'b'],
['a', 'c'],
['a', 'b'],
['b', 'a']
]
# working
new_data = []
for d in data:
if d not in new_data:
new_data.append(d)
print(new_data)
# [['a', 'b'], ['a','c'], ['b','a']]
# Failed to extract unique list
new_data = []
new_data = [d for d in data if d not in new_data]
print(new_data)
# [['a', 'b'], ['a', 'c'], ['a', 'b'], ['b', 'a']]
【问题讨论】:
-
是的,列表推导执行过程中
new_data为空,执行后结果赋值给new_data。 -
只使用您的原始版本...您就是这样修复它的。
-
测试时
new_data中没有任何内容:if d not in new_data。列表推导运行完成,然后继续使用赋值运算符将结果保存回new_data -
This Q&A 解释了为什么列表理解不起作用
标签: python python-3.x