作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有三个列表,我想用索引对其进行迭代。为此,我尝试使用 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:没有足够的值来解压(预期 4,得到 2)
我理解这个问题,enumerate 创建了一个包含索引和 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))]
也就是说,在我看来这是 abuse of list comprehension唯一的目的是使它成为一条线。最好使用常规循环——它会更具可读性。并且最好使用 f 弦。
for i, (x, y, z) in enumerate(zip(x,y,z)):
f.write(f'mVtet0.row({i}) = Eigen::Vector3d({x}, {y}, {z})\n')
关于python - 在 python 中解压枚举的 zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65753691/
我是一名优秀的程序员,十分优秀!