Pau*_*zer -1 python loops design-patterns numpy
正如标题所说,我想知道为什么range
其单参数形式的内置函数不接受序列作为其参数。我只能看到积极的一面,所以我想知道我是否错过了一些明显的东西。
range(somelist)
在他们的range(len(somelist))
意思应该是显而易见的时候打字的频率所以我的问题是(请不要仅仅发表意见)
range(len(x))
?可选(如果有人碰巧知道)
arange_like
or ?indices_like
(或者有吗?)编辑:我本来希望这没有必要,但显然是错误的。range
所以我澄清一下:这根本不是善恶的问题。为了争论起见,让我们接受它是语言的一部分并从那里获取一些东西。
因为您可以迭代序列而无需range
:
a = [1,2,3,4]
for item in a:
print(item)
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
如果您还需要索引,请使用enumerate
:
for idx, item in enumerate(a):
print(idx, item)
0 1
1 2
2 3
3 4
Run Code Online (Sandbox Code Playgroud)
如果您想组合两个或多个序列,请使用zip
or itertools.zip_longest
:
for item1, item2 in zip(a, a[::-1]):
print(item1, item2)
1 4
2 3
3 2
4 1
Run Code Online (Sandbox Code Playgroud)
因此,实际上(几乎)没有理由range(len(a))
这样做,为什么为此添加快捷方式会有用呢?
根据 Python Zen:
美丽总比丑陋好。
显式的比隐式的好。