Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表比较_Python_Python 3.x - Fatal编程技术网

Python列表比较

Python列表比较,python,python-3.x,Python,Python 3.x,我做家庭作业有困难。我正在尝试确定单词列表是否包含在字符列表中 例如: ([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], ['ANT', 'BOX', 'SOB', 'TO']) 我试图确定单词列表在其他两个列表中的次数。(它应该返回3)('ANT'、'SOB'和'TO') 第一个列表将以如下方式显示:(是的,它同时读取列和行中的单词) 稍后将有两个以上的列表 我该怎么做呢?因为这是一个家庭作业,让我解释一下必须发生的事情。在上面的代码中,如果我的P

我做家庭作业有困难。我正在尝试确定单词列表是否包含在字符列表中

例如:

([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], ['ANT', 'BOX', 'SOB', 'TO'])
我试图确定单词列表在其他两个列表中的次数。(它应该返回3)('ANT'、'SOB'和'TO')

第一个列表将以如下方式显示:(是的,它同时读取列和行中的单词)

稍后将有两个以上的列表


我该怎么做呢?

因为这是一个家庭作业,让我解释一下必须发生的事情。在上面的代码中,如果我的Python是正确的,那么您有一个列表。因此,您必须做的第一件事是根据单个字符的列表构造您要查找的单词。例如,您的['a'、'N'、'T'列表]将需要生成一个
ANT
的单词。现在,一旦找到要查找的单词,就必须检查完整的单词列表。在上面的示例中,这将是最后一个列表元素。因此,您可以获取
新词
列表并对其进行迭代,查看它是否包含在
原始列表的最后一个元素中。如果它可以将
foundWords
计数器增加1。

类似这样的操作:使用
all()


您可以从行和列生成字符串:

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

将所有单词转换为
set
s并进行比较。
set('hello')==set('elho'))
这会遗漏任何有重复字母的内容……OP需要检查表中的行和列中有哪些单词;我不认为设置集合和丢失顺序会有什么帮助。这是家庭作业,不是有点高级吗?我认为它不能回答OP的问题。@Levlevtsky你是对的,我误读了问题。更新了我的解决方案。
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