所以我被困在这个问题上,我被要求在 Python 中编写一个函数来检查一个 n 维数组(就是他们所谓的吗?)是否“对称”,这意味着该行数组的 1 == 第 1 列,第 2 行 == 第 2 列,第 3 行 == 第 3 列,依此类推。目标是有一个函数,如果对称则返回布尔值 True,否则返回 False。
我设法编写了一个有效的函数,但它只适用于大小为完美正方形的列表(例如 2 x 2、4 x 4),并且我的一些测试用例是“不规则”大小的(例如 2 x 5、3 x 2)。对于这些列表,我最终会在此处获得列表索引超出范围错误代码:
def symmetric(square):
final_result = []
x = 0
y = 0
while x < len(square):
row_list = []
col_list = []
while y < len(square[x]):
print "(x, y): %d, %d" % (x, y)
print "(y, x): %d, %d" % (y, x)
row_list.append(square[x][y])
col_list.append(square[y][x])
y = y + 1
if row_list == col_list:
final_result.append(True)
else:
final_result.append(False)
x = x + 1
for x in final_result:
if x == False:
return False
return True
还有我在这里失败的测试用例:
print symmetric([[1, 2, 3, 4],
[2, 3, 4, 5],
[3, 4, 5, 6]])
#Expected result: >>> False
#List index out of range
# This one actually returns the correct result, I'm just including it here
# for reference.
#print symmetric([["cat", "dog", "fish"],
# ["dog", "dog", "fish"],
# ["fish", "fish", "cat"]])
#Expected result: >>> True
#Actual result: >>> True
print symmetric([[1,2,3],
[2,3,1]])
#Expected Result: >>> False
#Actual result: list index out of range
有人可以帮我修改代码,使其适用于这些“不规则形状”的数组吗?