2016-10-27 6 views
2

私はいくつかの番号のリストを持っている:リストの違いを持つリストの作成方法は?

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

と別の1:

l2 = [3,5,6] 

私はL2ではなく、L1にある存在の数字との間隔のリストを取得したい:

intervals = [[1,2],[4],[7]] 

私はこのようにそれを行うにしようとしました:

current_common_line_no = 0 
    for line in l1: 
     if line in l2: 
      current_common_line_no = line 
     else: 
      next_common_line_no = l2[(l2.index(current_common_line_no))+1] 
      print next_common_line_no 

インターバルエッジのリストを取得するには、次は何ですか?

答えて

6

あなたはリスト内包表記でgroupby()を使用することができます。

from itertools import groupby  
[list(g) for k, g in groupby(l1, key=lambda x: x not in l2) if k] 
# [[1, 2], [4], [7]] 
+1

ニース以上が必要な場合は、私に教えてください。 'groupby'は驚くべき使い方でいっぱいです。 – alexis

+0

ありがとう、それは動作します! – insomniaqq

-1

使用セット。 Pythonにはセットデータ構造が組み込まれています。あなたが探しているのは違いです。ここにその文書があります。

のでset.difference(x、y)は

https://docs.python.org/2/library/sets.html

は、あなたがこの

+0

回答ありがとうございます、私はセットについて知っていますが、差異()は間隔を見つけるのを助けません。 – insomniaqq

+0

あなたが探しているのはgroupbyと思われます! – Hutchstang

関連する問題