我正在开发一个拼字游戏解算器。我有81个方格,A1(左上角)到I9(左下角) 和3个长度为9的列表,其中9个元素分别用于行,列和子网格。
我还有一个masterList = sub + col + row
例如:
row[0] = [['1A', '2A', '3A', '4A', '5A','6A','7A','8A','9A']]
当我这样做时:
test = [i for i in masterList if 'A1' in i]
print test
print len(test)
长度只有2(它应该是3)并且它只从组成masterList的前2个列表打印(所以在这个例子中,它没有找到row [0]。
test2 = [i for i in row if 'A1' in i]
print test2
正常工作。我不确定为什么会这样做。
答案 0 :(得分:1)
您不能使用print
放置作业声明。将它们分开如下:
test = [i for i in test if 'A1' in masterList]
print test
print len(test)
正如您所见here:print a = ...
语法无效
答案 1 :(得分:0)
您的第一和第二列表理解不完全相同:
test = [i for i in test if 'A1' in masterList]
与
不同 test2 = [i for i in row if 'A1' in i]
首先,第一个测试检查的唯一事情是看看'A1'是否在masterList中,你实际上并没有迭代地检查任何东西。
我无法解释为什么/你应该得到什么,因为从你的问题中不清楚test
最初包含哪些内容,但是你要检查一下if 'A1' in i
list comp和if 'A1' in masterList
在另一个中可能是差异的来源。