python 列表 A 和 B 之间出现差异的意外结果
unexpected results getting differences between python list A and B
我有两个字符串名称列表:
>>> len(list_a)
14740
>>> len(list_b)
14277
我需要获取 list_a 中不在 list_b 中的 463 个名称。
根据其他文章和答案,我尝试过:
a_set = set(list_a)
b_set = set(list_b)
diff1 = a_set - b_set
>>> len(diff1)
1457
diff2 = b_set - a_set
>>> len(diff2)
994
有趣的是 1457 - 994 = 463。所以感觉好像我很接近但遗漏或误解了什么。
我错过了什么?
Python 3
谢谢。
list_b
不一定是完全包含在 list_a
中的数据子集。考虑两个具有相似组成的小得多的列表。
list_a = [1, 2, 4, 4, 6]
list_b = [1, 3, 4]
如你所见,list_b
包含了list_a
中没有的3
,但list_a
的长度仍然更大。
简单循环
如果您试图获取 list_a
中的值而不是 list_b
中的 而不是 ,以下是 [= 中的非常直接的翻译50=]。让我们将 list_b
转换为一个集合,这样我们就可以获得元素包含的恒定时间查找。
list_a = [1, 2, 4, 4, 6]
list_b = [1, 3, 4]
set_b = set(list_b)
list_result = []
for a_ele in list_a:
if a_ele not in set_b:
list_result.append(a_ele)
print(list_result)
# [2, 6]
注意: 如果您不想在结果列表中出现重复值,您可以简单地遍历 set(list_a)
而不是 list_a
for 循环.
设置逻辑
你想用集合逻辑来回答这个问题是对的,基本上按照你写的就可以完成。
set_a = set(list_a)
set_b = set(list_b)
list_result = list(set_a - set_b)
print(list_result)
# [2, 6]
这将创建一个列表,其中包含 list_a
中的所有元素以及 list_b
中的元素 已删除.
我有两个字符串名称列表:
>>> len(list_a)
14740
>>> len(list_b)
14277
我需要获取 list_a 中不在 list_b 中的 463 个名称。 根据其他文章和答案,我尝试过:
a_set = set(list_a)
b_set = set(list_b)
diff1 = a_set - b_set
>>> len(diff1)
1457
diff2 = b_set - a_set
>>> len(diff2)
994
有趣的是 1457 - 994 = 463。所以感觉好像我很接近但遗漏或误解了什么。 我错过了什么?
Python 3
谢谢。
list_b
不一定是完全包含在 list_a
中的数据子集。考虑两个具有相似组成的小得多的列表。
list_a = [1, 2, 4, 4, 6]
list_b = [1, 3, 4]
如你所见,list_b
包含了list_a
中没有的3
,但list_a
的长度仍然更大。
简单循环
如果您试图获取 list_a
中的值而不是 list_b
中的 而不是 ,以下是 [= 中的非常直接的翻译50=]。让我们将 list_b
转换为一个集合,这样我们就可以获得元素包含的恒定时间查找。
list_a = [1, 2, 4, 4, 6]
list_b = [1, 3, 4]
set_b = set(list_b)
list_result = []
for a_ele in list_a:
if a_ele not in set_b:
list_result.append(a_ele)
print(list_result)
# [2, 6]
注意: 如果您不想在结果列表中出现重复值,您可以简单地遍历 set(list_a)
而不是 list_a
for 循环.
设置逻辑
你想用集合逻辑来回答这个问题是对的,基本上按照你写的就可以完成。
set_a = set(list_a)
set_b = set(list_b)
list_result = list(set_a - set_b)
print(list_result)
# [2, 6]
这将创建一个列表,其中包含 list_a
中的所有元素以及 list_b
中的元素 已删除.