python - 将此映射转换为 for 语句
问题描述
map
以下语句到for
循环的正确转换是什么?
map(lambda x: map(lambda y: map(lambda z: x*y*z, [5,6]), [3,4]), [1,2])
# [[[15, 18], [20, 24]], [[30, 36], [40, 48]]]
我的第一次尝试是这样的:
x_tmp = []
for x in [1,2]:
y_tmp = []
for y in [3,4]:
z_tmp = []
for z in [5,6]:
z_tmp.append(x*y*z)
y_tmp.append(z_tmp)
x_tmp.append(y_tmp)
x_tmp
# [[[15, 18], [20, 24]], [[30, 36], [40, 48]]]
但这似乎很奇怪,我无法想象这将是它的实际翻译。有没有更接近循环map
显示的工作方式的东西?for
我想也许它会接近:
[x*y*z for x in [1,2] for y in [3,4] for z in [5,6]]
# [15, 18, 20, 24, 30, 36, 40, 48]
但这似乎失去了所有的嵌套,而是做一个平面映射。
要执行列表理解方式,它似乎不仅需要嵌套,而且 args 也需要反转,例如:
>>> [[[x*y*z for z in [5,6]] for y in [3,4]] for x in [1,2]]
# [[[15, 18], [20, 24]], [[30, 36], [40, 48]]]
解决方案
实际上,您的第一次尝试是对嵌套for
循环的适当转换。您的最后尝试是对嵌套列表理解的适当转换。
我不知道你为什么觉得这些不满意;展开循环通常是一件麻烦事。您刚刚以等效形式提供了一个可爱的入门。:-)
推荐阅读
- c++ - E0070 不完整类型不允许
- linux - linux中文件写入相关的查询
- linkedin - Linkedin API v2/人员权限问题
- docker - docker 上的 Jenkins 无法访问 minikube
- r - 无法将包网站(来自 R 的 pkgdown)推送到 GitHub
- domain-driven-design - 我应该在哪一层放置自定义存储库参数
- android - ExposedDropdownMenu 的轮廓框未覆盖视图的右侧
- javascript - 在 Promise 中启动的异常未在 catch() 方法中捕获
- database - 未定义的变量:st_sel Laravel 8
- javascript - 函数赋值中的左侧无效