【问题标题】:Python index issue [duplicate]Python索引问题[重复]
【发布时间】:2017-12-31 18:04:35
【问题描述】:

下面是代码。为什么会这样?有什么替代方法?

line2 = ["a", "b","c","d","e","f","g","a","c", "d","e","g","h",]

for x in line2:
    print("X value is:", x, " and its index is:", line2.index(x))

输出是:

X value is: a  and its index is: 0
X value is: b  and its index is: 1
X value is: c  and its index is: 2
X value is: d  and its index is: 3
X value is: e  and its index is: 4
X value is: f  and its index is: 5
X value is: g  and its index is: 6
X value is: a  and its index is: 0
X value is: c  and its index is: 2
X value is: d  and its index is: 3
X value is: e  and its index is: 4
X value is: g  and its index is: 6
X value is: h  and its index is: 12

为什么它不增加?我该如何解决。我需要增加索引吗?而不是索引,我们有类似 X 的位置

【问题讨论】:

  • 它怎么知道你问的是哪个"c"?它给了你第一个。
  • 每次迭代时 X 值是否递增,{ for x in line2} 部分?
  • X 是列表的元素。没有什么可以增加的。

标签: python indexing increment


【解决方案1】:

使用index 调用在每次迭代中的成本非常,如果你只使用enumerate 免费获得它。此外,请注意索引的工作原理,因为您总是只会在第一次出现值时获得。

for index, value in enumerate(line2):
     print("X value is:", value, " and its index is:", index)

就您的实施方式的成本而言,这个答案是有效的。您无法真正将index 的功能与enumerate 的功能进行比较。

您的第一个列表将是O(n),这自然是因为您只是在遍历整个列表。然而,每个调用index,它本身就是O(n)。就低效率而言,这是巨大的。

enumerate 遍历您的列表一次,提供一个元组结果,其中第一个值表示您的索引,第二个只是列表中的 next 值,因此只给您一个 @ 987654330@ 复杂性。您的print 声明,因此在我提供的解决方案中不承担任何成本,因为您只是输出您已经拥有的值,而不需要任何额外的计算。

【讨论】:

  • 也许还提到list.index找到目标的第一次出现,因此忽略任何后续出现(除非指定了可选参数)?
  • @inspectorG4dget 哦,对了!愚蠢的。是的,我会补充的。
  • 所以根据我的理解,使用索引是昂贵的。枚举更便宜。
  • @HyderTom 你甚至无法真正比​​较它们。让我更新我的问题来为你解释一下。
  • @HyderTom 已更新。它们完全是两个不同的功能,而且index 通常也不是您想要使用的,因为正如解释的那样,它只为您提供它找到的第一个项目的索引。
猜你喜欢
  • 2020-11-16
  • 1970-01-01
  • 2019-03-05
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 2021-12-20
  • 1970-01-01
相关资源
最近更新 更多