我正在尝试创建一个过程(symmetric(p)),该过程将一个列表作为输入,该列表必须是正方形的,就像一个数独游戏,其组件也是列表,如果“正方形”是对称的或不是对称的,则输出值true或false。你知道吗
如果第一行等价于第一列,第二行等价于第二列,则正方形是对称的,依此类推。现在,我已经写了代码,但它不工作。它的输出总是正确的。下面是代码的粘贴:
def column_building(list, position):
column = []
for i in list:
column.append(i[position])
return column
a = [[1, 2, 3],
[2, 3, 4],
[3, 4, 1]]
b = [["cat", "dog", "fish"],
["dog", "dog", "dog"],
["fish","fish","cat"]]
def symmetric(p):
counter = 0
for e in p:
if e == column_building(p, counter):
counter = counter + 1
return True
else:
return False
break
print symmetric(b)
在这个代码中,第一个过程告诉我们哪个列在一个确定的位置。a
和b
是我创建的用作示例的列表。而且,如我所说,它的输出总是True,但是如果我使用b
,当e
是列表的第二个元素时,它不等于用第二个位置([dog, dog, fish]
)构建的列。你知道吗
要修复(而不是替换)代码,我建议:
你在错误的时间返回了
True
和False
,因为问题比你想的要简单。你知道吗Python魔法!你知道吗
这里,
zip(*p)
只是转置给定的列表列表。实际上,您需要检查transpose(p) == p
。你知道吗如果您使用的是python2.7,那么可以删除对
list
的外部调用。你知道吗Numpy版本:
相关问题 更多 >
编程相关推荐