在Python中比较列表以检测相等性

6 投票
4 回答
14502 浏览
提问于 2025-04-17 13:50

首先,我是一个刚开始学习Python编程的新手,之前查了很多问题,但没有找到和我这个情况相关的(其他问题都比较复杂)——好吧,接下来我继续说。

我需要的解决方案:我想对比两个整数列表,看看它们是否相等。理想情况下,我希望这个对比能一直进行,直到找到相等的情况(后面会在代码中详细说明)。数字会在list2中不断生成,直到找到相等的值。

代码解释:我有两个列表,这些列表是通过随机数生成的。它们的大小不一样。所以list1有500个元素,而list2的数量会在1到100之间变化。

#current attempt to figure out the comparison. 
if (list1 = list2):
     print(equalNumber)

也许我对循环的理解不太深,但我想让它循环遍历这个列表,我真的不知道从哪里开始。也许我没有使用像for循环或while循环这样的循环?

这是我的数字生成器:

    for i in range(0,500):
          randoms = random.randint(0,1000)
          fiveHundredLoop.append(randoms)

第二个生成器会生成一些数字,但数量会在1到100之间变化。{这个我可以自己处理}

4 个回答

3

如果你不想使用集合(set)的话

a = [1,2,3]
b = [3,2,4,5]
c = [i for i in a if i in b]
6

这是一项集合的工作:

>>> l1 = [1,2,3,4,5]
>>> l2 = [5,6,7,8,9]
>>> set(l1) & set(l2)
{5}
8

你的问题可以有几种不同的理解。

1) 一对一地遍历两个列表,当一对元素相等时停止:

>>> s = [10, 14, 18, 20, 25]
>>> t = [55, 42, 18, 12, 4]
>>> for x, y in zip(s, t):
        if x == y:
            print 'Equal element found:', x
            break


Equal element found: 18

2) 遍历一个列表,当遇到任何元素和第一个列表中的任何其他元素相等时停止。这种情况下,使用集合会很有帮助(因为集合可以快速检查元素是否存在):

>>> s = {18, 20, 25, 14, 10}
>>> for x in t:
        if x in s:
            print 'Equal element found', x
            break


Equal element found 18

3) 像逐个元素那样遍历两个列表,并比较它们的值:

>>> s = [10, 14, 18, 20, 25]
>>> t = [55, 42, 18, 12, 4]
>>> [x==y for x, y in zip(s, t)]
[False, False, True, False, False]

撰写回答