Załóżmy, że mam listę krotek:Python: warunkowo usuwać elementy z listy
x = [(1,2), (3,4), (7,4), (5,4)]
Spośród wszystkich krotek, które dzielą drugi element, chcę zachować krotki z największą pierwszego elementu:
y = [(1,2), (7,4)]
Jaki jest najlepszy sposób na osiągnięcie tego w Pythonie?
Dzięki za odpowiedzi.
- Krotki mogą być zamiast tego listami dwuelementowymi, jeśli to robi różnicę.
- Wszystkie elementy są nieujemnymi liczbami całkowitymi.
- Podoba mi się bieżące odpowiedzi. Naprawdę powinienem dowiedzieć się więcej o tym, co ma do zaoferowania
collections
!
Czy zachowujesz kolejność krotek; to znaczy, jeśli oryginał to '[(a, b), (x, y)]', to wynik musi mieć '[(a, b), (x, y)]' jako kolejność, lub jest ' [(x, y), (a, b)] "dopuszczalne? Czy zachowujesz kolejność liczb całkowitych w krotkach; to znaczy, że "[(b, a), (y, x)]" jest dopuszczalne? – gotgenes
Zamówienie wewnątrz krotek należy zachować. Kolejność krotek na liście powinna być zachowana, ale można je łatwo sortować za pomocą 'y.sort()', która będzie działać na pierwszym elemencie każdej krotki. –
@Steve Wierzę, że twoje twierdzenie, że kolejność pojawiania się krotek na liście jest zachowana, zaprzecza deklarowaniu, że mogą być również sortowane za pomocą 'sort()', chyba że w twoim pytaniu znajduje się nie sformułowane założenie, że lista wejściowa jest posortowana według pierwszy element krotek. – gotgenes