1. ホーム
  2. python

[解決済み] Python -複数リストの交わり?

2023-08-12 11:38:15

質問

Pythonで遊んでいて、2つのリストの交差点を得ることができます。

result = set(a).intersection(b)

では、もし d を含むリストです。 ab と、3つ目の要素である c の中にある 3 つのリストの交点を求める組み込み関数はありますか? d ? だから例えば

d = [[1,2,3,4], [2,3,4], [3,4,5,6,7]]

とすると、結果は

[3,4]

どのように解決するのですか?

2.4の場合、交差関数を定義すればよいでしょう。

def intersect(*d):
    sets = iter(map(set, d))
    result = sets.next()
    for s in sets:
        result = result.intersection(s)
    return result


新しいバージョンのpythonのために。

intersectionメソッドは任意の数の引数を取ります。

result = set(d[0]).intersection(*d[1:])

あるいは、リストをスライスしてコピーを作るのを避けるために、最初のセットとそれ自身を交差させることができます。

result = set(d[0]).intersection(*d)

どちらが効率的なのかはよくわからないし d[0] のような組み込みのチェックがない限り、リストのサイズに依存するような気がします。

if s1 is s2:
    return s1

を交差法の中で

>>> d = [[1,2,3,4], [2,3,4], [3,4,5,6,7]]
>>> set(d[0]).intersection(*d)
set([3, 4])
>>> set(d[0]).intersection(*d[1:])
set([3, 4])
>>>