首页 > 解决方案 > 在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 的结果创建一个元组。打开所有东西的正确方法是什么?

标签: python

解决方案


你得到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')

推荐阅读