Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

Petla for czy while ?

Id do strony Poprzedni  1, 2

 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Python
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
hurgadion



Doczy: 06 Kwi 2011
Posty: 799
Skd: Web :)

PostWysany: Nie Kwi 09, 2017 4:12 am      Temat postu: Odpowiedz z cytatem Pisownia

sporo jest kursw z Pythona na platformach edx, coursera, co najmniej 20 na rnym stopniu zaawansowania, poczwszy od elementarnych a od kursw podejmujcych zaawansowane zagadnienia i techniki programistyczne... duym plusem tych kursw jest to, e pisze si programiki, ktre s testowane przez autograder... :)
_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
Caporeira



Doczy: 26 Lis 2015
Posty: 46

PostWysany: Pon Kwi 10, 2017 3:32 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Wedug tutoriali przerobienie ptli for na comprehension powinno wyglda mniej wicej tak:
Kod:

result = [del result[x] for x in result if 'String']


ale po pierwszej nie dziaa del i po drugie pluje si e:
Kod:
UnboundLocalError: local variable 'result' referenced before assignment


gdzie result jest definiowane na samym pocztku programu (jeszcze przed klasami i funkcjami), czyli rozmiem e jest to globalna zmienna ?
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
hurgadion



Doczy: 06 Kwi 2011
Posty: 799
Skd: Web :)

PostWysany: Pon Kwi 10, 2017 3:47 pm      Temat postu: Odpowiedz z cytatem Pisownia

troch komplikujesz i to jeszcze nie za dobrze, powinno wystarczy tak:
Kod:

result = [x for x in result if 'String' in x]


no i sprawd przed t linijk czy tablica result jest ju zdefiniowana... :)

_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
Caporeira



Doczy: 26 Lis 2015
Posty: 46

PostWysany: Wto Kwi 11, 2017 7:13 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

Bardzo dziekuje. Dziaa perfekcyjnie :)

Kod:
    def not_need(self):

        global result

        string = ['Barcode']
        result = [x for x in result if 'Barcode' not in x]


w przyszoci chciabym doda wicej stringw. Wic ju teraz chciabym to zrobi, dlatego ten string ktrego szukam umieciem w licie 'string' i tam dodawa nowe stringi.
Patrze na rne przykady, ale chyba potrzebuje czasu aby si z tym oswoi (tego si nauczy).
Prbowaem czego takiego:
Kod:
        #result = [string for string in result]
        #result = [string for result in x for string in result]
        #result = [x not in result for x in string]

Ale to nie to co chce osign.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
hurgadion



Doczy: 06 Kwi 2011
Posty: 799
Skd: Web :)

PostWysany: Wto Kwi 11, 2017 9:22 am      Temat postu: Odpowiedz z cytatem Pisownia

powinna wystarczy taka konstrukcja, budujemy funkcj sprawdzajc czy dany element zawiera podstring z okrelonej listy stringw:
Kod:

def jest_string(a, lista_str):
    for e in lista_str:
        if e in a:
            return True
    return False


a nastpnie powysze comprehension z lekk modyfikacj:
Kod:

result = [x for x in result if jest_string(x, lista_str)]


Pozdrawiam :)

_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
Guaz



Doczy: 21 Cze 2017
Posty: 2

PostWysany: Sro Cze 21, 2017 1:14 am      Temat postu: Odpowiedz z cytatem Pisownia

Mona nawet pokusi si o inn optymalizacj, bez odwoywania si do zewntrznej funkcji:

Kod:

result = [dig_elem for elem in result for dig_elem in elem if dig_elem in lista_str]



A jeli chcemy eby nam zwraca element, to zadajemy mu:

Kod:

result = [elem for elem in result for dig_elem in elem if dig_elem in lista_str]



Jednak to nadal dziaa dobrze tylko jeli nasza lista result bya dwuwymiarowa, bd poszukiwanymi elementami s sowa ktre nie bd czci innego sowa kilkukrotnie jak na przykad:
'a' w sowie 'ananas'. Wic dziaamy krok dalej:
Kod:

result = ['help', 'me', 'now', 'maybe', 'ananas']
list_str = ['he', 'as']
result = [elem for elem in result for check in list_str if check in elem]
#More redable:
#[elem for elem in result
#     for check in list_str
#         if check in elem]
print(result)
#>>> ['help', 'ananas']


Problemu powyszego to nie rozwizuje, jednak pozwala nam sprawdza cae sowa czy wystpuj w elementach, speniajc zaoenie e nic nie bdzie dwukrotnie zawarte w elemencie.
W innym wypadku pozostaje nam eliminowa zwielokrotnione elementy wykorzystujc zbiory.
Kod:
result = list(set([elem for elem in result for check in lista_str if check in elem]))

To jednak ze wzgldu na ilo operacji raz e jest nieoptymalne, dwa e ustawia nam elementy w innej kolejnoci. (najczciej rosncej z tego co si orientuje, ale pewny nie jestem)
Wic zalenie od przetwarzanych danych, podrzucam dwie metody :). W przypadku chci zastosowania tej drugiej, ju lepiej posucha kolegi wyej, dla dugich list bdzie szybsze z funkcj.

_________________
Python 3.5.2
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
hurgadion



Doczy: 06 Kwi 2011
Posty: 799
Skd: Web :)

PostWysany: Sro Cze 21, 2017 3:26 pm      Temat postu: Odpowiedz z cytatem Pisownia

przy wikszej iloci danych chyba warto napisa jak funkcj hashujc, przypieszajc wyszukiwanie... mona wykorzysta do tego bardzo uyteczny obiekt sownika w Pythonie...
_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Python Wszystkie czasy w strefie CET (Europa)
Id do strony Poprzedni  1, 2
Strona 2 z 2

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.17126 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |