【发布时间】:2021-06-28 07:04:23
【问题描述】:
我在 Python 中遇到了一个问题,因为我这样做是为了好玩,而不是作为专业人士,我不明白为什么这不起作用。我有一个列表,其中包含其他列表,每个列表中有两个数字。这个函数应该检查元素 +1 和元素 -1 是否是我的 tp 列表的元素。如果是,请将它们附加到堆栈中。代码:
def check():
tp = [[0, 1], [1, 1], [1, 2], [2, 2], [2, 3], [3, 3]]
stack = []
for i in tp:
a = i[0]
b = i[1]
if [(a - 1), (b - 1)] and [(a + 1), (b + 1)] in tp:
stack.append(i)
return stack
不幸的是输出是:
[[0, 1], [1, 1], [1, 2], [2, 2]]
[1, 2] 是正确的,因为 [0, 1] 和 [2, 3] 是 tp 的元素。
[2, 2] 是正确的,因为 [1, 1] 和 [3, 3] 是 tp 的元素。
为什么这个函数也给了我另外两个? 例如: tp 的第一个元素是 [0,1] -> [-1,0] 并且 [1,2] 应该是计算的输出,但显然 [-1,0] 不在此列表中。我的(可能很明显)错误在哪里?提前致谢。
【问题讨论】:
-
if [(a - 1), (b - 1)] in tp and [(a + 1), (b + 1)] in tp: -
因为您在第一个检查器
if [(a - 1), (b - 1)]中评估True= 列表不为空,即True,您必须在tp中检查您的第一个检查器,因此True评估得到True用于元素..
标签: python list function for-loop if-statement