gpt4 book ai didi

python - 是否需要范围(len(a))?

转载 作者:IT老高 更新时间:2023-10-28 20:22:26 27 4
gpt4 key购买 nike

人们经常在关于 SO 的 python 问题中找到这种类型的表达式。要么只是访问可迭代的所有项目

for i in range(len(a)):
print(a[i])

这只是一种笨拙的写法:

for e in a:
print(e)

或分配给可迭代的元素:

for i in range(len(a)):
a[i] = a[i] * 2

应与以下内容相同:

for i, e in enumerate(a):
a[i] = e * 2
# Or if it isn't too expensive to create a new iterable
a = [e * 2 for e in a]

或用于过滤索引:

for i in range(len(a)):
if i % 2 == 1: continue
print(a[i])

可以这样表达:

for e in a [::2]:
print(e)

或者当您只需要列表的长度而不是其内容时:

for _ in range(len(a)):
doSomethingUnrelatedToA()

可能是:

for _ in a:
doSomethingUnrelatedToA()

在python中我们有enumerate、slicing、filtersorted等...作为python for 构造旨在迭代可迭代对象,而不仅仅是整数范围,是否存在需要 in range(len(a)) 的实际用例?

最佳答案

如果您需要处理序列的索引,那么可以 - 您可以使用它...例如,相当于 numpy.argsort ...:

>>> a = [6, 3, 1, 2, 5, 4]
>>> sorted(range(len(a)), key=a.__getitem__)
[2, 3, 1, 5, 4, 0]

关于python - 是否需要范围(len(a))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19184335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com