我有一个名为square
的简单列表:
square = [[1,2,3],[4,5,6],[7,8,9]]
我的目标是迭代九个元素中的每一个元素,同时获得该元素的行和列中的所有值。在本例中,第一次迭代(对于元素1)应该返回[1,2,3]
和[1,4,7]
,第二次迭代(对于元素2)将返回[1,2,3]
和[2,5,8]
等。以下代码起作用:
但是,有没有其他方法使用basePython来实现这一点呢?在
我可以使用for c in zip(*square):
对列表进行转置和迭代,如果只需要列一次,这就可以了,但是如果不存储矩阵的转置以及矩阵本身,就没有办法使用数组切片来索引列吗?在
不幸的是,像numpy这样的库目前还不是一个选择,因为它们需要先经过我们的代码评审过程,这需要很长的时间(大约6个月……)。我没有写政策,也没有设计程序,但这是我在这个机构必须遵守的政策。我已经提交了对numpy的请求,但同时,我只使用基本Python。在
如果您想用标准Python实现这一点,您可能需要尝试转换列表。然后您可以像正常一样索引。您可以使用
zip(*square)
后跟map(list,)
将其转换回列表:那么
square[1]
就会得到[2,5,8]
。在如果您想知道*操作符在这个上下文中做什么,it unpacks the list to a series of position arguments。所以zip看到
[1,2,3] [4,5,6] [7,8,9]
,并将它们压缩为[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
。最后的映射将元组转换为列表。在使用numpy
只使用Python
^{pr2}$相关问题 更多 >
编程相关推荐