Mam listę o zmiennej długości i próbuję znaleźć sposób, aby sprawdzić, czy aktualnie oceniany element listy jest najdłuższym ciągiem zawartym na liście. I używam Python 2.6.1
Na przykład:
mylist = ['abc','abcdef','abcd']
for each in mylist:
if condition1:
do_something()
elif ___________________: #else if each is the longest string contained in mylist:
do_something_else()
Z pewnością przeoczyłem proste, krótkie i eleganckie zestawienie list, które przeoczam?
python
list
list-comprehension
użytkownik104997
źródło
źródło
print(max(["this", "does", "work"], key=len))
zwraca tylko"this"
zamiast zwracać wszystkie najdłuższe ciągi.m=max(map(len,xs)); [x for x in xs if len(x) == m]
. Nie sądzę, że można to zrobić ładnie w jednej linii.Co powinno się stać, jeśli istnieje więcej niż 1 najdłuższy ciąg (pomyśl „12” i „01”)?
Spróbuj, aby uzyskać najdłuższy element
A potem regularne foreach
źródło
lub znacznie łatwiej:
źródło
http://effbot.org/zone/python-list.htm
Wygląda na to, że możesz użyć funkcji max, jeśli poprawnie odwzorujesz ją na ciągi znaków i użyjesz jej jako porównania. Oczywiście polecam po prostu znaleźć maksimum raz, nie dla każdego elementu na liście.
źródło
len(each) == max(len(x) for x in myList)
Lub tylkoeach == max(myList, key=len)
źródło
źródło