1

私はpythonが初めてなので、かなり基本的な質問に苦労していると思います。私は2つのリストを持っています:

a = [0, 1, 2, 3, 4, 5, 6, 7]
b = [1, 2, 5, 6]

出力では、それらの間のすべての交点を取得する必要があります:

c = [[1, 2], [5, 6]]

そのためのアルゴリズムは何ですか?

4

4 に答える 4

7

この目的のためにdifflib.SequenceMatcherを使用できます

#Returns a set of matches from the given list. Its a tuple, containing
#the match location of both the Sequence followed by the size
matches = SequenceMatcher(None, a , b).get_matching_blocks()[:-1]
#Now its straight forward, just extract the info and represent in the manner
#that suits you
[a[e.a: e.a + e.size] for e in matches]
[[1, 2], [5, 6]]
于 2013-01-09T18:46:42.937 に答える
1

Pythonで交差点をサポートするセットを使用できます

s.intersection(t) s & t new set with elements common to s and t

a = {0, 1, 2, 3, 4, 5, 6, 7}
b = {1, 2, 5, 6}
a.intersection(b)
set([1, 2, 5, 6])
于 2013-01-09T18:43:45.963 に答える
1

使用セット:

In [1]: a = [0, 1, 2, 3, 4, 5, 6, 7]

In [2]: b = [1, 2, 5, 6]

In [4]: set(a) & set(b)

Out[4]: set([1, 2, 5, 6])
于 2013-01-09T18:44:38.190 に答える
1

これにはラムダ式を使用することもできます。

>>> a = [0, 1, 2, 3, 4, 5, 6, 7]
>>> b = [1, 2, 5, 6]
>>> intersect = filter(lambda x: x in a, b)
>>> intersect
[[1, 2, 5, 6]]
于 2013-01-09T18:47:11.347 に答える