【问题标题】:unpack enumerated zip in python在python中解压枚举的zip
【发布时间】:2021-04-21 12:30:32
【问题描述】:

我有三个列表,我想用索引对其进行迭代。为此,我尝试使用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)

我理解这个问题,枚举创建一个带有索引和压缩结果的元组。打开包装的正确方法是什么?

【问题讨论】:

标签: python


【解决方案1】:

你会得到inttuple。将 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-strings。

for i, (x, y, z) in enumerate(zip(x,y,z)):
    f.write(f'mVtet0.row({i}) = Eigen::Vector3d({x}, {y}, {z})\n')

【讨论】:

  • 谢谢,效果很好。感谢您提供有关 f 弦的提示。我不知道可以这样使用它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多