比较python中每个列表的确切位置

2024-10-01 00:23:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个清单:

Gigits_ListGuesses_list。你知道吗

我需要比较它们,找出哪里有牛和牛(就像真正的游戏一样)

例如:如果一个列表是['1', '3', '4', '6'],而第二个列表是['2', '3', '6', '4']。所以“2C 1B”是两头母牛和一头公牛

    #setting the secret length
    Secret_Length = int(raw_input("the secret length"))

    #setting the secret base
    Secret_Base = int(raw_input("secret base_between 6-10"))

    #getting the secret from the user
    Secret = str(raw_input("enter the secret"))

    #checking if the secret in the right length
    if (int(len(Secret)) != Secret_Length):
        print "ERROR"
        sys.exit()

    Gigits_List = []
    #checking if the number in the right base
    for Each_Digigt in Secret:
        Gigits_List.append(Each_Digigt)
        if (int(Each_Digigt)>Secret_Base-1):
            print "ERROR"
            sys.exit

    #getting a guess from the user
    Guess = str(raw_input("enter the guess"))

    Guesses_list = []
    for Each_Guess in Guess:
        Guesses_list.append(Each_Guess)

Tags: theininputsecretrawiflengthlist
2条回答
list1 = ['1', '2', '3', '3']
list2 = ['1', '3', '3', '3']

cow, bull, removed = 0, 0, 0
for i in range(len(list1)):
    if list1[i - removed] == list2[i - removed]:
        bull += 1
        list1 = list1[:i - removed] + list1[i - removed + 1:]
        list2 = list2[:i - removed] + list2[i - removed + 1:]
        removed += 1
for i in range(len(list2)):
    if list2[i] in list1:
        cow += 1
print cow, bull

输出

0 3
B=0
C=0
list1 = ['1', '2', '3', '3']#target list
list2 = ['1', '3', '3', '3']#guess list
rest_val_1 = []
rest_val_2 = []
for val_1,val_2 in zip(list1,list2):
   if val_1 == val_2: B+=1
   else:
      rest_val_1.append(val_1)
      rest_val_2.append(val_2)
if not rest_val_2:print "YOU WIN"
else:
   for val_2 in rest_val_2:
      if val_2 in rest_val_1:
          C+=1

使用list1[:i-removed]+list1[i-removed+1:]就可以了。但是list[:]每次都创建一个新的列表,这样会花费更多的时间。你知道吗

相关问题 更多 >