python - 在python中解压枚举的zip
问题描述
我有三个要使用索引迭代的列表。为此,我尝试使用enumerate(zip(x, y, z))
,但是当我尝试解压缩它时,它失败了
[f.write('mVtet0.row({}) = Eigen::Vector3d({}, {}, {})\n'.format(i, x,y,z) for i, x, y, z in enumerate(zip(x,y,z))]
给出以下错误:ValueError: not enough values to unpack (expected 4, got 2)
我理解这个问题,枚举使用索引和 zip 的结果创建一个元组。打开所有东西的正确方法是什么?
解决方案
你得到int
一个tuple
. 将 x, y, z 括在括号中使其成为tuple
.
[f.write('mVtet0.row({}) = Eigen::Vector3d({}, {}, {})\n'.format(i, x,y,z)
for i, (x, y, z) in enumerate(zip(x,y,z))]
也就是说,在我看来,这是对列表理解的滥用,其唯一目的是使其成为单行。更好地使用常规循环 - 它会更具可读性。并且更好地使用 f-strings。
for i, (x, y, z) in enumerate(zip(x,y,z)):
f.write(f'mVtet0.row({i}) = Eigen::Vector3d({x}, {y}, {z})\n')
推荐阅读
- grep - 输出每个模式的第一个匹配项
- javafx - JavaFX 在切换时关注选项卡的内容
- verilog - 使用 for 循环的多个总是阻塞
- c# - Azure VM IIS 重新启动
- python - 找不到 div 类的 Web 抓取选择器
- azure - 获取 Azure Monitor 日志查询中失败请求的 Blob 名称列表
- windows - 从 slmgr powershell 查询许可证状态
- javascript - 嵌套在数组中的对象是类的属性
- javascript - 我可以使用 for 循环迭代器作为 javascript 中的数组索引吗?
- firebase - 无法使用 cli 更新 firebase 函数,因为默认服务帐户不存在