【发布时间】:2019-07-16 14:30:26
【问题描述】:
我正在做的练习要求我创建并打印出一个列表,其中包含以下 2 个列表中的所有常见元素,且不重复:
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
我正在尝试在一行代码中创建新列表,我认为我的逻辑是正确的,但显然它在某个地方存在问题。
以下是当前不起作用的:
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
common_list = []
common_list = [nums for nums in a if (nums in b and nums not in common_list)]
print(common_list)
我希望得到[1, 2, 3, 5, 8, 13],但即使我有“nums not in common_list”条件,1 仍然重复,所以我最终得到
[1, 1, 2, 3, 5, 8, 13]
【问题讨论】:
-
看看pythonsets
-
common_list仅在计算出 整个 列表理解后创建。 -
列表理解中
common_list的值就是[]。只有当理解完成时,新的结果列表才会分配给common_list。 -
Common elements between two lists with no duplicates 的可能重复项。好像这个人和你有同样的问题。另一个可能的骗局:Common elements comparison between 2 lists