为了账号安全,请及时绑定邮箱和手机立即绑定

for 在 python 到 javascript 语言中

for 在 python 到 javascript 语言中

达令说 2023-11-11 21:42:37
我在 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是一个辅助函数,但我认为没有必要理解其余的代码
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

让我们从 python 中的 for 循环如何工作开始:


与许多语言相比,Python 实际上获取您在 foo 循环语句中给出的任何可迭代对象中包含的每个元素,并且在不进行任何增量的情况下迭代该对象。所以在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 循环的示例中,您使用追加 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

相反,列表理解不会调用追加函数(或者至少不会调用太多。我不确定),因此迭代完成得更快。


关于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 个元素的可迭代对象。


我希望你现在明白了一切,如果没有在评论中告诉我我应该更好地解释什么。我很快就会为我所写的所有内容添加参考文献。


查看完整回答
反对 回复 2023-11-11
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

3 件事可能会帮助你将其转换为 Javascript:

  • 检查文档中的列表推导式。这很好地展示了如何将其转换为常规for...in循环。

  • 编辑:在 JavaScript 中,Pythonfor...in循环的等效项是for...of循环。for...inJavaScript 中的循环做了一些不同的事情。(它是 JavaScript,所以for (var i = 0; ...; ++i) ...也可以使用。)

  • for i, j in ...在Python中称为“拆包”;相当于JavaScript 中的“解构赋值”。


查看完整回答
反对 回复 2023-11-11
  • 2 回答
  • 0 关注
  • 67 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信