我目前正在编写一个很大的数独求解器算法,我遇到了一个奇怪的问题......在我的代码深处,我有这个'if'语句来检查给定变量的类型。如果它是一个列表,我希望它输入if语句。
当我的代码如下:
if type(cell) == "list":
# some code...
它不会进入声明(我有一个print()让我确定... 但有了这个:
if type(cell) == type(possibilities):
# some code...
它确实输入了代码......“可能性”是程序中早先分配的另一个变量,它始终是一个列表。 我在'if-statement'之前也有print()语句告诉我当前的单元格类型,用:
print(type(cell))
和一些打印的,如预期的那样,“< class”列表“>”
那么问题是什么?如果您认为需要,我可以在这里添加更多代码。我只是觉得最好不要因为它真的很大。
答案 0 :(得分:2)
您将其修复为
if type(cell) == list:
甚至更好
if isinstance( cell, list ):
后者即使单元格属于某种派生类型也能正常工作。
答案 1 :(得分:1)
if type(cell) == list:
注意,列表周围没有引号。 list
是一个引用列表类型的内置变量。