經常在SO上的python問題中找到這種類型的表達式。無論是對剛剛訪問的迭代是否需要範圍(len(a))?
for i in range(len(a)):
print(a[i])
所有項目這是寫的只是一個clumbersome方式:
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
,切片,filter
,sorted
,等等...至於蟒蛇for
結構旨在遍歷iterables不僅整數的範圍,是在你需要in range(len(a))
有現實世界的使用情況?
我認爲'範圍(len(a))'通常是對Python相當缺乏經驗的人(儘管不一定與編程有關)。 – rlms
我在學習Python時只使用了'range(len(a))'。現在,我不這樣做,正如你所說的那樣,替換很容易。 – iCodez
不是真的。我經常使用'range(len(a))',因爲我不需要列表a的內容,而只需要長度。 – aIKid