usuwanie elementów z listy

0

Cześć wszystkim,
chciałbym usunąć niepotrzebne pozycje z listy "połączone pozycje" w taki sposób że zostaje tylko pary pozycji, które zawierają pozycje z listy "pozycje"

pozycje = [959, 1079]

polaczone_pozycje = [(239, 356), (359, 476), (479, 596), (599, 716), (719, 836), (839, 956), (959, 1076), (1079, 1196), (1199, 1316), (1319, 1436), (1439, 1556), (1559, 1676), (1679, 1796), (1799, 1916), (1919, 2039), (2159, 2276), (2279, 2396), (2399, 2516), (2519, 2636), (2639, 2756), (2759, 2876), (2879, 2996), (2999, 3116), (3119, 3236), (3239, 3356), (3359, 3476), (3479, 3596), (3599, 3716), (3719, 3836), (3839, 3956), (3959, 4076), (4079, 4196), (4199, 4316), (4319, 4436), (4439, 4556), (4559, 4676), (4679, 4796), (4799, 4916), (4919, 5036), (5039, 5156), (5159, 5276), (5279, 5396), (5399, 5516), (5519, 5636), (5639, 5756), (5759, 5876), (5879,
5996), (5999, 6116), (6119, 6236), (6239, 6356), (6359, 6476), (6479, 6596), (6599, 6716), (6719, 6836), (6839, 6956), (6959, 7076), (7080, 7223), (7227, 7374), (7517, 7521), (7664, 7668), (7811, 7815), (7962, 8105), (8109, 8252), (8256, 8399)]

Oczekiwany rezultat:

nowa_lista = [(959, 1076), (1079, 1196)]

próbowałem zrobić:

do_testu = polaczone_pozycje
for poz in pozycje:
    do_testu.remove(poz)
for poz in do_testu:
    polaczone_pozycje.remove(poz)

ale to nie zadziałało. Czy ktoś ma jakiś pomysł jak to rozwiązać?

1
nowa_lista = [pair for pair in polaczone_pozycje if any(p in pair for p in pozycje)]
print(nowa_lista)

[(959, 1076), (1079, 1196)]

1

można jeszcze użyć funkcji filter oraz lambdy

pozycje = [959, 1079]

polaczone_pozycje = [(239, 356), (359, 476), (479, 596), (599, 716), (719, 836), (839, 956), (959, 1076), (1079, 1196), (1199, 1316), (1319, 1436), (1439, 1556), (1559, 1676), (1679, 1796), (1799, 1916), (1919, 2039), (2159, 2276), (2279, 2396), (2399, 2516), (2519, 2636), (2639, 2756), (2759, 2876), (2879, 2996), (2999, 3116), (3119, 3236), (3239, 3356), (3359, 3476), (3479, 3596), (3599, 3716), (3719, 3836), (3839, 3956), (3959, 4076), (4079, 4196), (4199, 4316), (4319, 4436), (4439, 4556), (4559, 4676), (4679, 4796), (4799, 4916), (4919, 5036), (5039, 5156), (5159, 5276), (5279, 5396), (5399, 5516), (5519, 5636), (5639, 5756), (5759, 5876), (5879,
5996), (5999, 6116), (6119, 6236), (6239, 6356), (6359, 6476), (6479, 6596), (6599, 6716), (6719, 6836), (6839, 6956), (6959, 7076), (7080, 7223), (7227, 7374), (7517, 7521), (7664, 7668), (7811, 7815), (7962, 8105), (8109, 8252), (8256, 8399)]

nowa_lista = list(filter(lambda para: any(p in para for p in pozycje), polaczone_pozycje))

print(nowa_lista)

1 użytkowników online, w tym zalogowanych: 0, gości: 1