Python:如何在 for 中解压缩多个值?

Posted

技术标签:

【中文标题】Python:如何在 for 中解压缩多个值?【英文标题】:Python: how to unpack more than one value in a for? 【发布时间】:2015-10-08 21:18:37 【问题描述】:

我正在尝试在 for 中解压缩两个值:

def getDiagonal(self):
    diagonal = [(r, c) for (r,c) in range(0, len(self.matrix)), range(0, len(self.matrix[0]))]
    return diagonal

并给出此错误:

    Traceback (most recent call last):
  File "matrixModule.py", line 4, in <module>
    print m.getDiagonal()
  File "C:\Users\Capinzal\Google Drive\ProgramaþÒo\Matrix\matrix.py", line 46, in getDiagonal
    diagonal = [(r, c) for (r,c) in range(0, len(self.matrix)), range(0, len(self.matrix[0]))]
ValueError: too many values to unpack

【问题讨论】:

您是否尝试过将其分解为一个更简单的循环,以便在尝试使其成为一行之前更轻松地进行故障排除?从外观上看,您并不太了解嵌套循环在列表推导中是如何工作的。 【参考方案1】:

zip():

diagonal = [(r, c) for (r,c) in zip(range(len(self.matrix)), range(len(self.matrix[0])))]

也就是说,如果您只是想要tuple,则无需解压,甚至无需理解,尽管您仍然需要zip()

diagonal = list(zip(range(len(self.matrix)), range(len(self.matrix[0]))))

您也可以省略range 对象的0,因为这是默认的起始值。如果您想指定自定义步长值,则需要它。

【讨论】:

以上是关于Python:如何在 for 中解压缩多个值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中解压缩 RDD 中每个项目的值(列表)?

如何在iOS中解压缩异步方式的zip文件?

AWS Lambda (Python) 无法在 S3 中解压缩和存储文件

如何在 HDFS 中解压缩多个 zip 文件

如何从多个 tar 文件中解压缩特定文件并压缩它们?

如何在 Perl 中解压缩双精度值?