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
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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

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

matchingkeywords = [ title for title
  • Odpowiedz
@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.
  • Odpowiedz
@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.
  • Odpowiedz
@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.
  • Odpowiedz
@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ł. ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@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.
  • Odpowiedz