我正在编写一个程序,该程序写出两个列表,每个列表包含0-9之间的五个数字。我需要程序比较列表以查找列表共有多少个数字,但是我不确定如何。
编辑:我只需要程序来写一些共同的数字,我不需要数字本身
if (BugType){
if instance_exists(Obj_Food_Small){
BugType = 1;
move_towards_point(Obj_Food_Small.x, Obj_Food_Small.y, 3)
} else {
BugType = 0;
move_towards_point(Obj_Ant_Home.x, Obj_Ant_Home.y, 3);
}
答案 0 :(得分:2)
假设我们有两个随机生成的列表的l_one
和l_two
。
counter = [0] * 10
answer = 0
for x in l_one:
counter[x] += 1
for x in l_two:
if counter[x] > 0:
counter[x] -= 1
answer += 1
print(answer)
与之前发布的O(n ^ 2)个解决方案相比,该算法在O(n)中有效。
答案 1 :(得分:1)
与其他已发布但使用Counter的解决方案类似:
import random
from collections import Counter
for _ in range(2000):
House_deal = [random.randint(0,9) for _ in range(5)]
Player_deal = [random.randint(0,9) for _ in range(5)]
hc = Counter(House_deal)
pc = Counter(Player_deal)
common = hc.keys() & pc.keys() #get the intersection of both keys
counts = 0
for cel in common:
counts += min(hc[cel], pc[cel])
print("House numbers: ", House_deal)
print("Player numbers: ", Player_deal)
print("Common numbers: ", counts)
我还将while
循环更改为for
循环。
答案 2 :(得分:0)
您可以定义一个类似here的函数,并使用len()函数获取列表中元素的数量。函数将列表转换为集合并获取它们的交集,这将是所有共同的元素。这样一来,如果您决定也要查看它们之间不常见的元素,或者甚至可以对其进行修改以从另一个列表中减去一个列表,以获得它们{{3 }}。让我知道这是否是您想要的。
答案 3 :(得分:0)
您可以使用以下功能:
def compare(list1 , list2):
common_list = []
for i in list1:
if i in list2:
common_list.append(i)
print(len(common_list)) # Number of common elements
答案 4 :(得分:0)
它的工作:
import random
list_one = random.sample(range(9), 4)
list_two = random.sample(range(9), 4)
print(list_one)
print(list_two)
count = 0
for item_one in list_one:
for item_two in list_two:
if item_one == item_two:
count +=1
print(count)
附注:for item_two in list_two:
的指令可能会被if item_one in list_two:
更改,但是您似乎是一个初学者,所以我将其更明确地加以说明。
答案 5 :(得分:0)
上一个答案的变体。
counter_1 = {k, 0 : k in l_one}
counter_2 = {k, 0 : k in l_two}
answer = 0
for x in l_one:
counter_1[x] = counter_1[x] + 1
for x in l_two:
counter_2[x] = counter_2[x] + 1
for x, v1 in counter_1.items():
v2 = counter_2.get(x, 0)
answer = answer + min (v1, v2)
print(answer)
答案 6 :(得分:-1)
您可以在Python中使用set数据类型,并执行类似的操作
In [1]: from random import randint
In [2]: import random
In [3]: random.seed(123)
In [4]: x = set([randint(0,9) for x in range(5)])
In [5]: y = set([randint(0,9) for x in range(5)])
In [6]: x
Out[6]: {0, 1, 4, 6}
In [7]: y
Out[7]: {0, 1, 6, 8}
In [8]: cnt = len(x & y) # return the amount of numbers in common, e.g. {0, 1, 6}
In [9]: cnt
Out[9]: 3
希望有帮助。