【问题标题】:How can I compare two ordered lists in python?如何比较python中的两个有序列表?
【发布时间】:2016-04-05 07:40:11
【问题描述】:

如果我有一个长列表:myList = [0,2,1,0,2,1],我将其分成两个列表:

a = [0,2,1]
b = [0,2,1]

我如何比较这两个列表以查看它们是否相等/相同,以及它们必须处于相同顺序的约束?

我看到一些问题要求通过对它们进行排序来比较两个列表,但在我的具体情况下,我不是检查排序比较,而是检查相同的列表比较。

【问题讨论】:

    标签: python


    【解决方案1】:

    只需使用经典的== 运算符:

    >>> [0,1,2] == [0,1,2]
    True
    >>> [0,1,2] == [0,2,1]
    False
    >>> [0,1] == [0,1,2]
    False
    

    如果相同索引处的元素相等,则列表相等。然后考虑订购。

    【讨论】:

    • 这可能会返回带有 numpy 列表的以下错误:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
    • @AlexReynolds 说了什么。您必须使用all(arr1 == arr2)(arr1 == arr2).all() 进行测试。
    • @Alex 这是一个数组,而不是一个列表。它们都是有序数据类型,但在概念上有所不同。应用于数组的操作会应用于其所有元素,但列表并非如此。
    【解决方案2】:

    如果您只想检查它们是否相同,a == b 应该在考虑顺序的情况下为您提供真/假。

    如果要比较元素,可以使用numpy进行比较

    c = (numpy.array(a) == numpy.array(b))

    在这里,c 将包含一个包含 3 个元素的数组,所有这些元素都为真(以您的示例为例)。如果a和b的事件元素不匹配,那么c中对应的元素就会为假。

    【讨论】:

    • 然后检查c.all()是否为真
    【解决方案3】:

    表达式a == b 应该可以完成这项工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多