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)
@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ł. ( ͡°͜ʖ͡°)
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
@zarev: Eh panowie coraz więcej amatorów pcha się do zabawy hehe mam nadzieje, ze przejdzie ta nowelizacja ustawy i programować będzie można tylko z licencja
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
any('Lord' in name for name in ["Lord of the rings", "Hobbit", "Joker", "Lord of war"])films = [ ... ]
keyword = "Lord"
matchingkeywords = [ title for title
Przede wszystkim dzięki użyciu generatora nie musisz tam sprawdzać za każdym razem całej listy, po pierwszym trafieniu zwróci true.
next(name for name in ["ord of the rings", "Hobbit", "Joker", "Lord of war"] if 'Lord' in name)Owiń w try catcha i zrobione.
import pandas as pd
filmy = pd.Series (["Lord of the rings", "Hobbit", "Joker", "Lord of war"])
szukane = "Lord"
filmy [filmy.str.contains( szukane )]
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.
Tak zrobię, chciałem tylko zobaczyć czy z next() też da się coś takiego wykonać.
@zarev @heniek_8
Dzięki wszystkim za pomoc, będzie czego się uczyć.
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.
@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
źródło: comment_1661264334prE6RhVioo2xU8e0wsC8tU.jpg
Pobierzdzięki bo włożyłeś trochę wysiłku i ja się czegoś dowiedziałem
szczerze mówiąc liczyłem że na milionie rekordów pandas okaże się lepszy