列表理解不能贯穿所有元素

时间:2014-05-09 04:29:19

标签: python list list-comprehension

我正在开发一个拼字游戏解算器。我有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

正常工作。我不确定为什么会这样做。

2 个答案:

答案 0 :(得分:1)

您不能使用print放置作业声明。将它们分开如下:

test = [i for i in test if 'A1' in masterList]
print test
print len(test)

正如您所见hereprint 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在另一个中可能是差异的来源。