2 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
讓我們從 python 中的 for 循環(huán)如何工作開始:
與許多語言相比,Python 實(shí)際上獲取您在 foo 循環(huán)語句中給出的任何可迭代對(duì)象中包含的每個(gè)元素,并且在不進(jìn)行任何增量的情況下迭代該對(duì)象。所以在python中下面的代碼并不是無限循環(huán)。
for i in range(5):
i=3
print(i)
## prints 3, five times
所有這些都使 for 循環(huán)能夠迭代可迭代對(duì)象,如下所示
for i in ['hsusu', 4, ['usjs'], '21']:
print(i)
## prints each one of the list elements
現(xiàn)在列表理解中的 for 循環(huán)與普通的 for 循環(huán)是一樣的。然而,列表理解是從可迭代創(chuàng)建列表的快速方法,因?yàn)樗褂酶郊雍瘮?shù)效率。在以下使用普通多行 for 循環(huán)的示例中,您使用追加 5 次來創(chuàng)建列表
next = [] # an empty list
for i, j in getValidMoves(grid,x,y,moves): # iterate through the iterable
next.append((i,j)) # append the desired element
相反,列表理解不會(huì)調(diào)用追加函數(shù)(或者至少不會(huì)調(diào)用太多。我不確定),因此迭代完成得更快。
關(guān)于next = [ (i,j) for i,j in getValidMoves(grid,x,y,moves)] 這一行正在創(chuàng)建一個(gè)列表,因?yàn)榉嚼ㄌ?hào),名為next,因?yàn)樽兞棵?,包含元組,因?yàn)?(i,j) 的普通括號(hào),函數(shù)輸出的內(nèi)容,getValidMoves(grid,x,y,moves)其中應(yīng)該是一個(gè)可迭代的(否則會(huì)出錯(cuò))?,F(xiàn)在,由于您在 for 循環(huán)中使用了兩個(gè)變量,因此可迭代對(duì)象必須類似于 [[1,2],[7,8]],其中可迭代對(duì)象的每個(gè) elemen6 都是具有 2 個(gè)元素的可迭代對(duì)象。
我希望你現(xiàn)在明白了一切,如果沒有在評(píng)論中告訴我我應(yīng)該更好地解釋什么。我很快就會(huì)為我所寫的所有內(nèi)容添加參考文獻(xiàn)。

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
3 件事可能會(huì)幫助你將其轉(zhuǎn)換為 Javascript:
檢查文檔中的列表推導(dǎo)式。這很好地展示了如何將其轉(zhuǎn)換為常規(guī)
for...in
循環(huán)。編輯:在 JavaScript 中,Python
for...in
循環(huán)的等效項(xiàng)是for...of
循環(huán)。for...in
JavaScript 中的循環(huán)做了一些不同的事情。(它是 JavaScript,所以for (var i = 0; ...; ++i) ...
也可以使用。)for i, j in ...
在Python中稱為“拆包”;相當(dāng)于JavaScript 中的“解構(gòu)賦值”。
添加回答
舉報(bào)