如何在Python循环中同时获取元素及对应索引?(类Go range)
Python同时获取元素与索引的正确实现
你的错误代码:
resources = ["a", "b", "c"] for alph, i in resources, range(len(resources)): print(alph) if i == 2: print(2)
这段代码的问题在于循环的迭代对象是(resources, range(len(resources))),这是一个包含两个元素的元组。第一次迭代时,会把整个resources列表赋值给alph,把range对象赋值给i,完全不符合你想要的“元素映射到alph,索引映射到i”的需求。
你想要的类似Golang中range的功能,Python里用内置函数enumerate()就能轻松实现,它专门用于遍历可迭代对象时同时获取索引和对应元素。
正确实现代码
resources = ["a", "b", "c"] for i, alph in enumerate(resources): print(alph) if i == 2: print(2)
这段代码的运行效果和你给出的Golang示例一致:
- 每次迭代,
i会拿到当前元素的索引,alph拿到对应的元素 - 当索引
i等于2时,会额外打印2
如果你需要索引从非0的数值开始(比如从1计数),还可以给enumerate()传入start参数:
for i, alph in enumerate(resources, start=1): print(f"索引{i},元素{alph}")
你给出的Golang参考代码
resources := ["a", "b", "c"] for incrementer, alph := range resources { fmt.Print(alph) if i == 2 { fmt.Print(2) } }
内容的提问来源于stack exchange,提问作者Nicholas Davis
相关产品推荐
相关产品推荐

