1

リストが 1 つあり、リスト内のループを削除したいと考えています。たとえば、1 つの要素が既にリストにある場合、この要素の間にある繰り返しのすべての要素を削除したいとします。例えば:

a=[(4,4),(5,6),(7,7),(7,6),(4,4),(8,8),(9,9)]

そして、私はこれに似たものを手に入れたい:

a   [(4,4),(8,8),(9,9)]

どうすればこれを入手できますか?

ありがとう

4

2 に答える 2

2
a = [(4,4),(5,6),(7,7),(7,6),(4,4),(8,8),(9,9)]
b = []
for e in a:
    if e in b:
        b[b.index(e)+1:] = []
    else:
        b.append(e)

# b == [(4, 4), (8, 8), (9, 9)]
于 2012-12-12T07:50:40.010 に答える
0
#! /usr/bin/python3.2

while True:
    loops = sorted ( ( (x [0], y [0] ) for x, y in [ (x, y) for x in enumerate (a) for y in enumerate (a) ] if x [0] < y [0] and x [1] == y [1] ), key = lambda x: x [0] - x [1])
    if loops: a = a [:loops [0] [0] ] + a [loops [0] [1]:]
    else: break

これにより、交差する (重複する) ループの場合に最も長いループ (の 1 つ) から始まるすべてのループが削除されます。

于 2012-12-12T08:15:42.333 に答える