对于 python 到 javascript 语言
For in python to javascript language
我在 python 中有这一行用于列表理解,但是我不太了解这种语言,我想将其转换为 javascript。
该行是:
next = [ (i,j) for i,j in getValidMoves(grid,x,y,moves) ]
num = [ (len(getValidMoves(grid,x+i,y+j,moves)),i,j) for i,j in next]
getValidMoves是一个辅助函数,但我觉得没必要看懂剩下的代码
3 项可以帮助您将其转换为 Javascript:
- 勾选docs for list comprehensions。这很好地展示了如何将其转换为常规
for...in
循环。
- 编辑:在 JavaScript 中,相当于 Python
for...in
循环的是 for...of
循环。 JavaScript 中的 for...in
循环做了一些不同的事情。 (它是 JavaScript,所以 for (var i = 0; ...; ++i) ...
也可以使用。)
for i, j in ...
在Python中被称为“拆包”;相当于 JavaScript. 中的 "Destructuring assignment"
让我们从 python 中的 for 循环如何工作开始:
与许多语言相比,python 实际上获取包含在您在 foor 循环语句中提供的任何可迭代对象中的每个元素,并且在不进行任何递增的情况下迭代该对象。所以在python下面的代码不是死循环
for i in range(5):
i=3
print(i)
## prints 3, five times
所有这些都使 for 循环能够像下面这样迭代一个可迭代对象
for i in ['hsusu', 4, ['usjs'], '21']:
print(i)
## prints each one of the list elements
现在列表理解中的 for 循环与普通的 for 循环是一样的。然而,列表理解是从可迭代对象创建列表的快速方法,因为它使用附加函数效率。在以下带有普通多行 for 循环的示例中,您使用了 append 5 次以创建列表
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
相反,list comprehension 不调用 append 函数(或者至少不调用 append 函数。我不确定),因此迭代完成得更快。
关于next = [ (i,j) for i,j in getValidMoves(grid,x,y,moves)]
该行正在创建一个列表,因为方括号,命名为 next
,因为变量名,它包含元组,因为 (i,j) 的普通括号,输出的内容函数 getValidMoves(grid,x,y,moves)
,它应该是一个可迭代的(否则会出错)。现在,由于您在 for 循环中使用了两个变量,因此可迭代对象必须类似于 [[1,2],[7,8]],其中可迭代对象的每个 elemen6 都是具有 2 个元素的可迭代对象。
我希望你现在明白了一切,如果不明白,请在评论中告诉我应该更好地解释什么。我很快就会为我写的所有内容添加参考。
我在 python 中有这一行用于列表理解,但是我不太了解这种语言,我想将其转换为 javascript。
该行是:
next = [ (i,j) for i,j in getValidMoves(grid,x,y,moves) ]
num = [ (len(getValidMoves(grid,x+i,y+j,moves)),i,j) for i,j in next]
getValidMoves是一个辅助函数,但我觉得没必要看懂剩下的代码
3 项可以帮助您将其转换为 Javascript:
- 勾选docs for list comprehensions。这很好地展示了如何将其转换为常规
for...in
循环。 - 编辑:在 JavaScript 中,相当于 Python
for...in
循环的是for...of
循环。 JavaScript 中的for...in
循环做了一些不同的事情。 (它是 JavaScript,所以for (var i = 0; ...; ++i) ...
也可以使用。) for i, j in ...
在Python中被称为“拆包”;相当于 JavaScript. 中的 "Destructuring assignment"
让我们从 python 中的 for 循环如何工作开始:
与许多语言相比,python 实际上获取包含在您在 foor 循环语句中提供的任何可迭代对象中的每个元素,并且在不进行任何递增的情况下迭代该对象。所以在python下面的代码不是死循环
for i in range(5):
i=3
print(i)
## prints 3, five times
所有这些都使 for 循环能够像下面这样迭代一个可迭代对象
for i in ['hsusu', 4, ['usjs'], '21']:
print(i)
## prints each one of the list elements
现在列表理解中的 for 循环与普通的 for 循环是一样的。然而,列表理解是从可迭代对象创建列表的快速方法,因为它使用附加函数效率。在以下带有普通多行 for 循环的示例中,您使用了 append 5 次以创建列表
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
相反,list comprehension 不调用 append 函数(或者至少不调用 append 函数。我不确定),因此迭代完成得更快。
关于next = [ (i,j) for i,j in getValidMoves(grid,x,y,moves)]
该行正在创建一个列表,因为方括号,命名为 next
,因为变量名,它包含元组,因为 (i,j) 的普通括号,输出的内容函数 getValidMoves(grid,x,y,moves)
,它应该是一个可迭代的(否则会出错)。现在,由于您在 for 循环中使用了两个变量,因此可迭代对象必须类似于 [[1,2],[7,8]],其中可迭代对象的每个 elemen6 都是具有 2 个元素的可迭代对象。
我希望你现在明白了一切,如果不明白,请在评论中告诉我应该更好地解释什么。我很快就会为我写的所有内容添加参考。