Python 重复返回的数字多于所需的数字
印刷品:[1,2,3,5,7,8,10,12,13] 7、9、10、11、12不应该在名单上。因为他们 不在较小的列表中Python 重复返回的数字多于所需的数字,python,Python,印刷品:[1,2,3,5,7,8,10,12,13] 7、9、10、11、12不应该在名单上。因为他们 不在较小的列表中 我做错了什么?您的代码依赖于这样的假设:语句 最大=a 将列表复制到最大值。这在Python中是不正确的。相反,这句话只是引用了旧的列表a 要正确复制列表,您的代码应如下所示: 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] if len(s
我做错了什么?您的代码依赖于这样的假设:语句 最大=a 将列表复制到最大值。这在Python中是不正确的。相反,这句话只是引用了旧的列表a 要正确复制列表,您的代码应如下所示:
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]
if len(set(a)) > len(set(b)): # finds the biggest list
largest = a
smallest = b
else:
largest = b
smallest = a
common = largest
for i in largest:
if i not in smallest:
common.remove(i)
print(common)
然后您将得到结果
[1,2,3,5,8,13]您的代码依赖于以下假设: 最大=a 将列表复制到最大值。这在Python中是不正确的。相反,这句话只是引用了旧的列表a 要正确复制列表,您的代码应如下所示:
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]
if len(set(a)) > len(set(b)): # finds the biggest list
largest = a
smallest = b
else:
largest = b
smallest = a
common = largest
for i in largest:
if i not in smallest:
common.remove(i)
print(common)
然后您将得到结果
[1,2,3,5,8,13]您的行
common=max
不会将listmax
的值复制到新的listcommon
中。而是使这两个变量都指向同一个列表。因此,当您在最大的
上循环并从公共
中删除时,您正在修改正在循环的列表。那是个坏主意
用计算机制作一份真实的副本
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]
if len(set(a)) > len(set(b)): # finds the biggest list
largest = list(a)
smallest = list(b)
else:
largest = list(b)
smallest = list(a)
common = list(largest)
for i in largest:
if i not in smallest:
common.remove(i)
print(common)
或
然而,要获得两个列表中的元素的良好列表,一种更具python风格的方法就是单行
common = list(largest)
请注意,这将按排序顺序返回列表,这可能与原始顺序不同。您的行
common=maximum
不会将listmaximum
的值复制到新列表common
。而是使这两个变量都指向同一个列表。因此,当您在最大的
上循环并从公共
中删除时,您正在修改正在循环的列表。那是个坏主意
用计算机制作一份真实的副本
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]
if len(set(a)) > len(set(b)): # finds the biggest list
largest = list(a)
smallest = list(b)
else:
largest = list(b)
smallest = list(a)
common = list(largest)
for i in largest:
if i not in smallest:
common.remove(i)
print(common)
或
然而,要获得两个列表中的元素的良好列表,一种更具python风格的方法就是单行
common = list(largest)
请注意,这将按排序顺序返回列表,这可能与原始顺序不同。如果要获取两个集合中的项目,只需使用
set(a)&set(b)
。如果要获取两个集合中的项目,只需使用set(a)&set(b)
。