0

私は以下のようなリストを持っています:

list = [ [1,2,3,4,5], 
         [1,2,3,3,5], 
         [1,2,3,2,5], 
         [1,2,3,4,6] ]

このリストを解析して、以下の条件を満たす場合はエントリを削除したいと思います。

  1. ifはANDlist[i][0]と同じlist[i+1][0]
  2. list[i][4]と同じ場合list[i+1][4]

これにより、以下のリストが表示されます。

list = [ [1,2,3,4,5],
         [1,2,3,4,6]]

どんな助けでも大歓迎です。ありがとう。

編集:Python 2.5.4の使用

4

4 に答える 4

3

リスト内包表記を使用して、条件に一致しないものすべてを保持します。

[sublist for i, sublist in enumerate(yourlist)
    if i + 1 == len(yourlist) or (sublist[0], sublist[4]) != (yourlist[i+1][0], yourlist[i + 1][4])]

したがって、最後の行、または最初と最後の要素が次の行の同じ列と一致しない行は許可されます。

結果:

>>> [sublist for i, sublist in enumerate(yourlist)
...     if i + 1 == len(yourlist) or (sublist[0], sublist[4]) != (yourlist[i+1][0], yourlist[i + 1][4])]
[[1, 2, 3, 2, 5], [1, 2, 3, 4, 6]]
于 2013-04-04T08:46:42.963 に答える
0

簡潔でない非リスト内包表記バージョン。

list = [ [1,2,3,4,5], 
         [1,2,3,3,5], 
         [1,2,3,2,5], 
         [1,2,3,4,6] ]

output = []

for i, v in enumerate(list):
    if i +1 < len(list):
        if not (list[i][0] == list[i+1][0] and list[i][4] == list[i+1][4]):
            output.append(v)
    else:
        output.append(v)

print output
于 2013-04-04T08:55:20.100 に答える