我在完成家庭作业时遇到了困难。我正在尝试确定单词列表是否包含在字符列表中。
例如:
([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], ['ANT', 'BOX', 'SOB', 'TO'])
我正在尝试确定单词列表在其他两个列表中出现的次数。(它应该返回 3)('ANT', "SOB', and 'TO')
第一个列表最终会像这样显示:(是的,它读取列和行中的单词)
ANTT
XSOB
稍后会有两个以上的列表。
我该怎么做?
我在完成家庭作业时遇到了困难。我正在尝试确定单词列表是否包含在字符列表中。
例如:
([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], ['ANT', 'BOX', 'SOB', 'TO'])
我正在尝试确定单词列表在其他两个列表中出现的次数。(它应该返回 3)('ANT', "SOB', and 'TO')
第一个列表最终会像这样显示:(是的,它读取列和行中的单词)
ANTT
XSOB
稍后会有两个以上的列表。
我该怎么做?
您可以从行和列生成字符串:
In [1]: data = ([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], ['ANT', 'BOX', 'SOB', 'TO'])
In [2]: rows = [''.join(s) for s in data[0]]
In [3]: rows
Out[3]: ['ANTT', 'XSOB']
In [4]: cols = [''.join(s) for s in zip(*data[0])]
In [5]: cols
Out[5]: ['AX', 'NS', 'TO', 'TB']
然后检查这些字符串中的单词:
In [6]: for word in data[1]:
if any(word in s for s in rows+cols):
print word # you can increment your counter here as well
...:
ANT
SOB
TO
由于这是一项家庭作业,让我解释一下必须发生的事情。如果我的 Python 是正确的,在上面的代码中,你有一个列表列表。因此,您要做的第一件事是根据单个字符的列表构建您要查找的单词。例如,您的 ['A','N','T'] 列表将需要产生一个单词ANT
. 现在,一旦您有了要查找的单词,就必须检查已完成的单词列表。在上面的示例中,这将是最终的列表元素。因此,您获取newWords
列表并对其进行迭代,看看它是否包含在originalList
. 如果找到,则将foundWords
计数器加 1。
像这样:使用 all()
.
In [73]: lis1
Out[73]: [['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']]
In [74]: lis2
Out[74]: ['ANT', 'BOX', 'SOB', 'TO']
In [75]: [x for x in lis2 if (any(x in "".join(y) for y in lis1) or any(x in "".join(k) for k in zip(*lis1)))]
Out[75]: ['ANT', 'SOB', 'TO']