使用 Python 函数比较列表中的行和列



可能的重复项:
Python - 确定列表是否对称的算法

我需要帮助编写一个 Python 函数 - 对称,它将大小为 n(这是一个方阵)的列表作为输入,该列表检查第一行是否与第一列相同,第二行是否与第二列相同,依此类推,如果元素相同,则返回布尔值 True,如果元素相同,则返回 false。该列表可以包含整数或字符串。

def symmetric(my_list):
my_list = [[1, 2, 3],
           [2, 3, 4],
           [3, 4, 1]]

在Python2中有效

my_list == map(list, zip(*my_list))

zip(*some_2d_list)是一个相当著名的成语,当some_2d_list被解压缩并经过zip处理时,它具有转置行和列的效果

不幸的是,zip 返回一个元组列表,因此有必要将它们转换为列表。这就是map(list, ...)所做的

这可能看起来很浪费,因为相等性测试将比较不在对角线上的每对对两次,但这是在 C 级别完成的,因此比使用显式循环和进行最少数量的比较要快得多。

如果是家庭作业,我建议你应该使用嵌套循环

编辑:在Python3中,map(...)返回一个map对象,你可以通过使用list(map(...))来获取Python2行为

编辑:我认为在Python3中,这更好

all(i==j for i,*j in zip(my_list ,*my_list))
import numpy as np
# convert the 2d list into an ndarry
x = np.array(my_list)
# test if x is identical to its transpose
isSymmetric = (x.T == x).all()

然后isSymmetric告诉您结果。

相关内容

  • 没有找到相关文章

最新更新