6

首先,我是 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

4 回答 4

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]
于 2013-01-27T18:09:16.097 回答
6

这是集合的工作:

>>> l1 = [1,2,3,4,5]
>>> l2 = [5,6,7,8,9]
>>> set(l1) & set(l2)
{5}
于 2013-01-27T18:04:51.470 回答
3

如果你不想使用 set

a = [1,2,3]
b = [3,2,4,5]
c = [i for i in a if i in b]
于 2013-01-27T18:08:12.640 回答
0

假设列表为 list1 和 list2。list1 有 500 个条目,值从 0 到 1000,来自随机生成器代码。list2 有 x 个条目 x 不是 500。它可以大于 500 或小于 500。从问题中不清楚,并且值在 1 到 100 的范围内。

// This will return the matching one.  
set(list1).intersection(set(list2))
于 2013-01-27T18:25:02.613 回答