比较Python中的列表

时间:2010-12-07 22:30:09

标签: python

说我有list1 = [1,2,3,4]list2 = [5,6,7,8]。如何将1中的第一个元素list15中的第一个元素list2进行比较? 2 63 7,等等。

我正在尝试使用for循环,但我不知道该怎么做。我理解做for x in list1只是检查一个元素x到list1中的所有元素,但我不知道如何按照我描述的方式比较两个列表。

3 个答案:

答案 0 :(得分:8)

您可以使用zip:

同时遍历两个列表
for (x, y) in zip(list1, list2): do_something

'zip'函数为您提供[(1,5), (2,6), (3,7), (4,8)],因此在循环迭代N中,您将获得每个列表的第N个元素。

答案 1 :(得分:5)

默认比较运算符按字典顺序比较列表。所以你可以这样说:

>>> [1, 2, 3, 4] < [5, 6, 7, 8]
True

如果您想要计算元素比较,可以使用mapcmp(或任何其他运算符:

>>> map(cmp, [1, 2, 3, 4], [5, 6, 7, 8])
[-1, -1, -1, -1]

答案 2 :(得分:1)

如果您的结果将成为新列表,那么您可以使用列表推导:

new_list = [ some_function(i, j) for i, j in zip(list1, list2) ]

以上是上述代码的一个真实示例:

>>> list1 = [1, 2, 3, 4]
>>> list2 = [1, 3, 4, 4]
>>> like_nums = [ i == j for i, j in zip(list1, list2) ]
>>> print like_nums
[True, False, False, True]

这将生成一个bool列表,显示两个列表中相同索引的项是否彼此相等。

此外,如果您使用zip函数,则可以在完成操作后解压缩结果。方法如下:

>>> list1 = [1, 2, 3, 4]
>>> list2 = [1, 3, 4, 4]
>>> new_list = zip(list1, list2)         # zip
>>> print new_list
[(1, 1), (2, 3), (3, 4), (4, 4)]
>>> newlist1, newlist2 = zip(*new_list)  # unzip
>>> print list(newlist1)
[1, 2, 3, 4]
>>> print list(newlist2)
[1, 3, 4, 5]

如果您需要修改原始列表,同时还要以某种方式比较同一索引的元素,这可能很有用。