为获得矩阵的主要和次要对角线,我可以使用:
major, minor = list(
map(list, zip(*([(row[i], row[-i - 1]) for i, row in enumerate(mat)]))))
但是,是否存在更好的(pythonic)方式来选择列表推导中的项目,以便我以后不必转置它?
也可以扩展到创建更多列表(例如,列表中int
,strings
和floats
的3个单独列表?
答案 0 :(得分:0)
确实没有必要花费这么长的时间来使用一个列表理解。与使用两个单独的列表推导相比,它的可读性更低,维护更难,而且没有更快:
Task
是的,major = [row[i] for i, row in enumerate(mat)]
minor = [row[-i] for i, row in enumerate(mat, 1)]
技巧可用于从元组列表中提取任意数量的元素,只需在元组中生成更多元素。但是,该技术不应该被使用。