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 中每个项目的值(列表)?