-1

宿題で困っています。単語のリストが文字のリストに含まれているかどうかを判断しようとしています。

例えば:

([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], ['ANT', 'BOX', 'SOB', 'TO'])

単語のリストが他の 2 つのリストに何回含まれているかを判断しようとしています。(3 を返す必要があります)('ANT'、"SOB"、および 'TO')

最初のリストは次のように表示されます:(はい、列と行の両方で単語を読み取ります)

ANTT
XSOB

後で 2 つ以上のリストが表示されます。

どうすればいいですか?

4

3 に答える 3

1

行と列から文字列を生成できます。

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
于 2012-10-31T21:10:47.173 に答える
0

これは宿題なので、何が起こらなければならないかを説明させてください。私のPythonが正しい場合、上記のコードにはリストのリストがあります。したがって、最初に行う必要があるのは、1 文字のリストに基づいて探している単語を作成することです。たとえば、 ['A','N','T'] のリストは の単語を生成する必要がありANTます。探している単語が見つかったら、完成した単語リストを確認する必要があります。上記の例では、それが最後のリスト要素になります。したがって、newWordsリストを取得して、それがの最後の要素に含まれているかどうかを確認するために繰り返し処理しますoriginalList。見つかった場合は、foundWordsカウンターを 1 増やします。

于 2012-10-31T21:07:31.550 に答える
0

このようなもの:を使用して 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']
于 2012-10-31T21:07:35.290 に答える