javascript - 对于在 python 到 javascript 语言中
问题描述
我在 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 是一个辅助功能,但我认为没有必要了解其余代码
解决方案
让我们从 python 中的 for 循环如何工作开始:
与许多语言相比,python 实际上获取包含在您在 foror 循环语句中给出的任何可迭代对象中的每个元素,并且在没有任何增量的情况下迭代该对象。所以在 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 循环是一样的。然而,列表推导式是一种从可迭代对象创建列表的快速方法,因为它使用了 append 函数的效率。在以下带有普通多行 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
相反,列表推导不调用 append 函数(或者至少没有那么多。我不确定),所以迭代完成得更快。
关于next = [ (i,j) for i,j in getValidMoves(grid,x,y,moves)]
这一行正在创建一个列表,因为方括号,named next
,因为变量名,包含元组,因为(i,j)的普通括号,函数输出的内容getValidMoves(grid,x,y,moves)
,其中应该是可迭代的(否则会出错)。现在,由于您在 for 循环中使用了两个变量,因此可迭代对象必须类似于 [[1,2],[7,8]],其中可迭代对象的每个 elemen6 都是具有 2 个元素的可迭代对象。
我希望您现在了解所有内容,如果没有在评论中说明我应该更好地解释什么。我将很快为我写的所有内容添加参考。
推荐阅读
- reactjs - 在 Reactjs 生产模式下,当我使用浏览器路由器时,我的应用程序不会更改 url 并且不会渲染组件,但它可以与 hashrouter 一起正常工作
- ruby-on-rails - RoR 中 ||= 和辅助方法的主要任务是什么?
- android - 生物识别提示未显示面部解锁提示
- api - Flutter - 我正在尝试根据 api 响应打印一个文本框
- android - 创建 Xamarin.Forms 视图,显示每个句子可点击的段落
- go - 使用 kafka 消费者渠道和上下文的 Go 例程
- outlook - 以编程方式将 LDAP 帐户添加到 MS Outlook
- android - 显示软键盘时如何隐藏页脚按钮?
- c++ - 基于 Chromium Edge 的 WebView2 不起作用
- c++ - MPI_Reduce 是否也做 MPI_Barrier 的工作?