【问题标题】:list index comparison in pythonpython中的列表索引比较
【发布时间】:2014-03-13 09:03:44
【问题描述】:

通过列表索引比较,我的意思是我有两个列表,我根据 2 个不同的标准使用不同的方法(冒泡排序和插入排序)对它们进行排序。我现在想比较一个列表中的元素是否在另一个列表中的相同位置,如果是,则返回其位置。 所以我有

List1 = selectionsort()
List2 = bubblesort()
indices = [List1.index(i) for i in List2]
print (str(indices))

我知道这是不对的,因为它将 List1 的元素与 List2 元素进行比较并返回它们匹配的位置(我认为)。此外,这种暗示 List1 是 List2 的子集,但事实并非如此,这两个列表相同,只是排序不同

【问题讨论】:

  • 你忘了使用比较运算符 :p

标签: python list indexing comparison


【解决方案1】:

您可以使用列表推导来获取这样的匹配索引

list1, list2 = [1, 2, 3], [1, 4, 3]
print [index for index, (e1, e2) in enumerate(zip(list1, list2)) if e1 == e2]

输出

[0, 2]

我们首先使用zip 压缩这两个列表。因此,在每次迭代中,我们都会从两个列表中获取相应位置的元素。然后我们使用enumerate 运行它,它将返回一个元组,其中包含索引和来自可迭代对象的实际元素。如果元素匹配,我们会保留索引。

编辑:对于您在 cmets 部分给出的特定输入

list1, list2 = ["a", "b", "c", "d", "e"], ["e", "d", "c", "b", "a"]
print [index for index, (e1, e2) in enumerate(zip(list1, list2)) if e1 == e2]

输出

[2]

【讨论】:

  • 嘿,这似乎很有帮助,但我认为这不是我想要的。也许我应该让自己更清楚:例如list1 = [a, b, c, d, e] list2 = [e, d, c, b, a]所以c在两个列表中的位置相同,我如何检索它的索引(2)以及我如何为多个值执行此操作或者你给我的函数是否可以使用那样吗?
  • @sbhb91 请编辑问题并清楚地解释问题,并给出示例输入和预期输出。
  • @sbhb91 请尝试我在答案中给出的程序。它将工作您的输入。请检查后确认。
  • 确实有效,抱歉我还没试过,非常感谢
  • 我现在遇到了更多麻烦,如何打印列表中特定索引处的元素!!?我想:coincidences = [index for index, (e1, e2) in enumerate(zip(CountriesArea, CountriesPop)) if e1 == e2] for i in coincidences: print (str(i)) 但不,这行不通……这应该很简单,但现在已经很晚了,我正在失去理智
猜你喜欢
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
相关资源
最近更新 更多