比较python中的列表以检测相等性

时间:2013-01-27 18:00:33

标签: python list compare

首先,我是python编程的新手并尝试在其他问题中进行大量研究,但没有一个我能找到与此类相关的东西(所有其他问题都更高级) - 那就说继续了。

需要的解决方案: 通过两个两个整数列表并比较相等性。理想情况下,我希望它能够一遍又一遍地遍历列表,直到存在相等性(显示代码后更多内容)。该数字将在list2中一遍又一遍地生成,直到相等。

代码解释:我有两个通过随机数生成生成的列表。列表的大小不相同。因此list1有500个条目,list2的金额从1到100不等。

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

也许我对循环知之甚少,但我希望它循环遍历列表,我真的不知道从哪里开始。也许我没有像for循环那样使用循环?

这是我的号码生成器:

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

第二个会做一些,但只会在1到100之间有不同的条目。{我可以自己照顾}}

4 个答案:

答案 0 :(得分: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]

答案 1 :(得分:6)

这是套装的工作:

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

答案 2 :(得分:3)

如果您不想使用set

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

答案 3 :(得分:0)

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

// This will return the matching one.  
set(list1).intersection(set(list2))