私はltと呼ばれるタプルのリストを持っています。タプルのリストから連続した重複タプルを削除するにはどうすればよいですか?
lt = [ (1,2) , (1,2) , (2,3) , (3,4) , (5,6) , (7,8) , (7,8) ]
リストからすべての重複タプルを削除したいとします。結果は次のようになります。
mainList = [(1, 2), (2, 3), (3, 4), (5, 6), (7, 8)]
私はltと呼ばれるタプルのリストを持っています。タプルのリストから連続した重複タプルを削除するにはどうすればよいですか?
lt = [ (1,2) , (1,2) , (2,3) , (3,4) , (5,6) , (7,8) , (7,8) ]
リストからすべての重複タプルを削除したいとします。結果は次のようになります。
mainList = [(1, 2), (2, 3), (3, 4), (5, 6), (7, 8)]
lt = [ (1,2) , (1,2) , (2,3) , (3,4) , (5,6) , (7,8) , (7,8) ]
mainList = []
for t in lt:
if len(mainList) == 0:
mainList.append(t)
else:
if mainList[-1] != t:
mainList.append(t)
print(mainList)
RESULT pairwise()
function from the itertools
reception sectionを使用して
[(1, 2), (2, 3), (3, 4), (5, 6), (7, 8)]
:
from itertools import tee
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return zip(a, b)
mainList = [curr for curr, next in pairwise(lt) if curr != next]
これはあなたに削除されたすべての連続したタプルで新しいリストを提供します。また、デフォルトのIDキーでitertools.groupby()
functionを使用することができます。
from itertools import groupby
mainList = [k for k, g in groupby(lt)]
はデモ:複雑なリスト内包について
>>> from itertools import tee, groupby
>>> lt = [ (1,2) , (1,2) , (2,3) , (3,4) , (5,6) , (7,8) , (7,8) ]
>>> def pairwise(iterable):
... "s -> (s0,s1), (s1,s2), (s2, s3), ..."
... a, b = tee(iterable)
... next(b, None)
... return zip(a, b)
...
>>> [curr for curr, next in pairwise(lt) if curr != next]
[(1, 2), (2, 3), (3, 4), (5, 6)]
>>> [k for k, g in groupby(lt)]
[(1, 2), (2, 3), (3, 4), (5, 6), (7, 8)]
どのように?
[v for i, v in enumerate(lt) if i == o or v != lt[i-1]]
新しいリストを作成して、そのリストに要素を追加できます。要素が既に新しいリストにある場合は、追加しないでください。
lt = [ (1,2) , (1,2) , (2,3) , (3,4) , (5,6) , (7,8) , (7,8) ]
newlt = [lt[0]]
for item in range(len(lt)):
if item == 0:
continue
elif lt[item] == lt[item - 1]:
continue
else:
newlt.append(lt[item])
print(newlt)
[(1, 2), (2, 3), (3, 4), (5, 6), (7, 8)]
編集:これはうまくいくはずです。それは明らかに非常に基本的です。
良い試行ですが、コードが不正確な結果を生成します。このリストでコードを試してください。 (1,2)、(1,2)、(2,3)、(3,4)、(5,6)、(7,8)、(7,8)、(1,2) ]。 index0と1は連続して重複しますが、最後の要素は重複しません。最後のコードも削除されます。 –