W języku Python jest prosty sposób sprawdzenia, czy wszystkie wartości na liście są sobie równe?wszystkie wartości listy same
Odpowiedz
Wiele sposobów przychodzi na myśl. Można go zamienić na Edycja: Jak zauważył inny plakat, działa to tylko z hashable; Odwołuję tę sugestię, ponieważ ma gorszą wydajność: i jest mniej ogólna.set
(który odfiltrowuje duplikaty) i sprawdzić długość jednego
Można użyć wyrażenia generatora: all(items[0] == item for item in items)
, które spowoduje zwarcie (tj. Zwróci wartość false, gdy tylko predykat zakończy się niepowodzeniem dla elementu, a nie będzie kontynuowany).
>>> l = [1, 1, 1, 1]
>>> all(map(lambda x: x == l[0], l))
True
>>> a = [1, 1, 1, 1]
>>> len(set(a))
1
Należy zauważyć, że ta metoda zakłada, że każdy element na liście można umieścić w zestawie. Niektóre typy, takie jak typy zmienne, nie mogą być umieszczone w zbiorze.
Korzystanie z set
, jak wskazał Greg Hewgill, jest doskonałym rozwiązaniem. Oto kolejna, która jest leniwsza, więc jeśli jedna para elementów nie jest równa, reszta nie będzie porównywana. To może być wolniejsze niż rozwiązanie set
podczas porównywania wszystkich elementów, ale nie zostało porównane.
l = [1, 1, 1]
all(l[i] == l[i+1] for i in range(len(l)-1))
Uwaga na specjalny przypadek all([]) == True
.
Spowoduje to porównanie każdej pozycji z kolejną (i podniesienie błędu poza zakresem dla wejść o nieparzystej długości). – delnan
@delnan: Tak, może lepiej wziąć pierwszy element (jeśli taki jest) i porównać go ze wszystkimi innymi. Ale co masz na myśli przez wprowadzenie nieparzystej długości? – AndiDog
'' '', dla którego 'n = len (l)' jest nieparzyste, które nie kończy się, spróbuje uzyskać dostęp do 'l [n-1 + 1] = l [n]', który jest poza zakresem. – delnan
- 1. Sprawdzanie wszystkie wartości w elemencie są takie same
- 2. Znajdź takie same wartości w tablicy przekątnej
- 3. Listy są takie same, ale nie są uważane za równe?
- 4. Extract wszystkie wartości z listy list z nazwą samego wektora
- 5. Uzyskaj wszystkie wpisy o wartości z listy [Opcja] w Scala
- 6. haskell usuwa wszystkie wystąpienia danej wartości z listy list.
- 7. Random.Next zwraca zawsze te same wartości.
- 8. połączenie numer kolumny o te same wartości
- 9. Wszystkie permutacje listy
- 10. Jak sprawdzić, czy wszystkie wartości w kolumnach macierzy numpy są takie same?
- 11. Mysql zapytanie, aby znaleźć wszystkie wiersze, które mają te same wartości jak innym wierszu
- 12. Dopasuj, jeśli dwie wartości na niezameldowanej liście są takie same
- 13. Python wszystkie kombinacje listy list
- 14. Usuń wszystkie przedmioty z listy
- 15. SQL Server wszystkie listy błędów?
- 16. Przyłącz listy według wartości
- 17. Wyszukaj występowanie listy wartości
- 18. Django: Usuń wszystkie dane z każdej tabeli (ale same tabele)
- 19. C# określić, czy wszystkie znaki w ciągu są takie same
- 20. elekwentne listy laravel - Sortowanie listy wartości kolumn
- 21. rozprostować wszystkie wartości wielu tablic w Swift
- 22. JQuery uzyskać wszystkie dane atrybuty z listy
- 23. MySQL porównać te same wartości w kolumnie dwa
- 24. Node.js dla() pętli zwracającej te same wartości w każdej pętli
- 25. Scalanie wierszy mających te same wartości w wielu kolumnach
- 26. Jak poprzedzić wszystkie elementy listy do innej listy
- 27. Usuwanie kluczowych wartości par z listy słowników
- 28. Perl, uzyskaj wszystkie wartości mieszania
- 29. testu jeśli numpy tablica zawiera same zera
- 30. Powróć podzbiór na podstawie listy wartości logicznych
+1 Korzystanie ze sprawdzania listy jest zalecane na mapie(). –
@Artanis: To nie jest zrozumienie listy - dlatego jest lepsza od rozwiązania "set";) – delnan
Dzięki! to jest proste i słodkie! – derks