首页 > 解决方案 > 如何比较两个列表并返回一个包含共享相同索引的元素的列表?

问题描述

我需要获取 4 位的用户输入,将其与随机生成的 4 位数字进行比较,然后返回它们在相同索引中的共同值。

例如: 密码:4667

用户输入:3608

输出:_ 6 _ _

不幸的是,当我运行我已经编写的内容时,它会在密码上的任何位置打印数字,无论它们在用户输入中的位置如何,然后它还会为每次迭代返回一个数字“_”在for循环中。

这是我到目前为止所拥有的:

from random import randint

def randomNumber():
    numberList = []
    digits = 0
    while digits != 4:
        numberList += [randint(0,9)]
        digits += 1
    return numberList

secretNumber = randomNumber()

guessNumber = list(input("Enter a four digit number: "))

guessNumber = list(map(int, guessNumber))

guessList = guessNumber.copy()
correctNumbers = []
numberPosition = []
numberPosition.clear()
for number in guessNumber:
    if number in secretNumber:
        correctNumbers.append(number)
        for n in secretNumber:
            if n == number:
                numberPosition.append(n)
            else:
                numberPosition.append("_")

如果此代码块存在任何间距/制表符问题,我深表歉意,我从 Jupyter 笔记本上复制了它。

谢谢!

标签: python-3.xlist

解决方案


尝试这个:

def f(a, b):
    for i in range(min(len(a), len(b))):
        if a[i] == b[i]:
            yield i, a[i]
        else:
            yield i, None

a, b = '123456', '2335678'
print(''.join(['_' if c is None else c for _, c in f(a, b)]))

推荐阅读