当前位置: 首页 > 知识库问答 >
问题:

比较两个Python列表的顺序

漆雕深
2023-03-14
    null

但是,如果清单2为a、d、b、c、e应该返回false(因为字符串d出现的顺序混乱)

共有1个答案

丁英韶
2023-03-14

首先,我们定义list1:

>>> list1='a,b,c,d,e,f,g,h,i,j'.split(',')
>>> list1
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

虽然您的list1碰巧是按字母顺序排列的,但我们不会这样假设。无论如何,这段代码都可以工作。

现在,让我们创建一个乱序的清单2:

>>> list2 = 'a,b,f,d,e,g,c,h,i,j'.split(',')
>>> list2
['a', 'b', 'f', 'd', 'e', 'g', 'c', 'h', 'i', 'j']
>>> list2 == sorted(list2, key=lambda c: list1.index(c))
False
>>> list2 = 'a,b,d,e'.split(',')
>>> list2 == sorted(list2, key=lambda c: list1.index(c))
True

让我们考虑一个list2,它的元素不在list1中:

>>> list2 = 'a,b,d,d,e,z'.split(',')

为了忽略不需要的元素,让我们创建list2b:

>>> list2b = [c for c in list2 if c in list1]

然后我们可以像以前一样进行测试:

>>> list2b == sorted(list2b, key=lambda c: list1.index(c))
True
>>> list2b = ['a', 'b', 'd', 'd', 'e']
>>> indices = [list1.index(c) for c in list2b]
>>> all(c <= indices[i+1] for i, c in enumerate(indices[:-1]))
True
 类似资料:
  • 问题内容: 我有两个列表(不是Java列表,可以说两列) 例如 我想要一个返回多少个相同元素的方法。对于此示例,它应该为3,并且应该返回列表的相似值和不同的值。 如果是,我应该使用哈希图,然后用什么方法获得结果? 请帮忙 PS:这不是学校作业:)因此,如果您只是指导我就足够了 问题答案: 编辑 这是两个版本。一种使用,另一种使用 比较它们并从中创建您自己的版本,直到获得所需的内容。 这应该足以覆盖

  • 我有两个表,分别是产品和采购: PRODUCTS表-将获得购买的所有新产品。这意味着表prroducts中不存在相同的productname。所有独特产品列表 采购表-具有唯一purchase_id的所有采购产品的列表。 > 如果要在PURCHASE中添加或插入值,表PRODUCTS将获得PURCHASE的所有值,但前提是PURCHASE中的productname不存在于PRODUCTS中的'pr

  • 问题内容: 如果我有一个长长的清单:我分为两个清单: 我如何比较这两个列表以查看它们是否相等/相同,并约束它们必须具有相同的顺序? 我看到过一些问题,要求通过对两个列表进行排序来进行比较,但是在我的特定情况下,我不是要检查排序的比较,而是要检查相同的列表比较。 问题答案: 只需使用经典运算符: 如果相同索引处的元素相等,则列表相等。然后考虑订购。

  • 我有一个关于列表比较器的问题。我有一个带有表格的网页应用程序。我可以在这个表格中编辑数据,也可以删除行。当我编辑数据时,标准比较器工作正常,但当我删除行时,我有问题。这个问题很常见(我想),当我删除一行时,javers比较旧列表和现在的列表时,看起来是这样的:旧列表有两个对象,现在列表有一个对象(我删除了第一个),现在javers不知道哪个对象被删除了,他比较旧列表中的第一个对象和新列表中的第二个

  • 本文向大家介绍Python实现比较两个列表(list)范围,包括了Python实现比较两个列表(list)范围的使用技巧和注意事项,需要的朋友参考一下 有一道题: 比较两个列表范围,如果包含的话,返回TRUE,否则FALSE。 详细题目如下: Create a function, this function receives two lists as parameters, each list i

  • 我发现了许多关于比较列表对象而不管其元素的顺序如何的问题和答案,但我的问题更复杂:我有两个bean,其中包含一个列表。我希望对这两个bean执行assertEquals,而不管内部列表中元素的顺序如何。有没有一个简单的方法可以做到这一点?