Wpis z mikrobloga

Chciałbym dostawać informację, czy jakiś element jest na liście(wtedy print), czy go nie ma (komunikat). Normalnie można użyćif x in lista

Ale co zrobić jak chce się sprawdzić występowanie tylko jednego elementu w kilkuelementowym stringu? Napisałem coś takiego jak poniżej i działa, ale czy da się to zrobić w jakiś inny lub prostszy sposób?

filmy = ["Lord of the rings", "Hobbit", "Joker", "Lord of war"]

szukane = "Lord"
licznik = 0

for x in filmy:
....if szukane in x:
........licznik += 1
........print(x)

if licznik < 1:
....print("nie ma na liście")

#python #naukaprogramowania
  • 14
@croppz: A co da any skoro on nie pyta o to czy jest, ale chce go wyprintowac? ( ͡° ͜ʖ ͡°)

films = [ ... ]
keyword = "Lord"

matchingkeywords = [ title for title in films if keyword in title ]
if matching
keywords:
_print('\n'.join(matchingkeywords))
else:
__print('Keyword not found')
@zarev: any zwraca boola, co z nim zrobisz to już osobny temat.

Przede wszystkim dzięki użyciu generatora nie musisz tam sprawdzać za każdym razem całej listy, po pierwszym trafieniu zwróci true.
@zarev: a dobra, ty chcesz tytuł wyprintować, nevermind. W takim razie to będzie

next(name for name in ["ord of the rings", "Hobbit", "Joker", "Lord of war"] if 'Lord' in name)
Owiń w try catcha i zrobione.
@croppz

next(name for name in ["Lord of the rings", "Hobbit", "Joker", "Lord of war"] if 'Lord' in name)

A jak zrobić żeby wydrukowało zarówno Lord of the rings jak i Lord of war? Bo teraz drukuje tylko to pierwsze.
@Rajtuz: jeżeli chcesz wyciągnąć wszystkie pasujące, to nie ma co kombinować, bo i tak zawsze trzeba będzie przelecieć całą listę. @zarev czytał uważniej niż ja, weź sobie po prostu to co tam wyżej napisał. ( ͡° ͜ʖ ͡°)
@Rajtuz: no możesz sobie zrobić taki generator

gen = (name for name in ["ord of the rings", "Hobbit", "Joker", "Lord of war"] if 'Lord' in name)
i napieprzać po nim nextem aż ci się nie znudzi albo nie sypnie exceptionem że koniec iteracji. Miałoby to nawet jakiś sens jakbyś zawsze potrzebował n pierwszych wystąpień, a sama przeszukiwana lista byłaby długa. Jeżeli potrzebujesz wszystkich - nie ma sensu.
@Rajtuz: @heniek_8: @croppz: ale po co mu mieszacie w glowie i optymalizujecie pod wzgledem performance zadanie w ktorym facet ma liste na 5 elementow? ( ͡° ͜ʖ ͡°)

@heniek_8: gdybys mial wiecej niz 1yoe, wiedzialbys ze 1M stringow to nie jest duza ilosc i szukanie w tym zajmuje rzedu 0.2-0.01s na nowoczesnych maszynach

Przy 2 yoe zrozumialbys ze wsadzanie czegos do Pandas series ma
zarev - @Rajtuz: @heniek8: @croppz: ale po co mu mieszacie w glowie i optymalizujecie...

źródło: comment_1661264334prE6RhVioo2xU8e0wsC8tU.jpg

Pobierz