Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Pętla for na Comprehension



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Python
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Caporeira



Dołączył: 26 Lis 2015
Posty: 47

PostWysłany: Sro Maj 10, 2017 4:02 pm  OP    Temat postu: Pętla for na Comprehension Odpowiedz z cytatem Pisownia

Witam,
mam dwie listy:
Kod:
display_array = [['AGENT', 'OBJEKTY', 'WA05', '01', '005CC-004MAAA'], ['AGENT', 'OBJEKTY', 'WA05', '01', '006RT-005MA02'], ['AGENT', 'OBJEKTY', 'WA05', '01', 'SP004'], ['AGENT', 'OBJEKTY', 'WA05', '01', '001CC-008MAAA']]
object_array = [['002CC-EESS', '(WA05', '01?1)'], ['005CC-EESS', '(WA05', '01?1)'], ['007RC-EESS', '(WA05', '01?1)'], ['008RC-EESS', '(WA05', '01?1)'], ['001CC-008MAAA', '(WA05', '01?1)'], ['002CC-009MAAA', '(WA05', '01?1)']]


Chcę porównać te dwie listy czy mają takie same wartości. Np display_array[x][4] i object_display[x][0]

Na początek chcę to zrobić na pętli for a nastepnie comprehension. Ale już z pętlą coś mi nie działa jak trzeba.
Mam coś takiego:
Kod:
        for x in object_array:
            if x[0] in display_array:
                print(x[0])

Niestety nic nie wypluwa, próbowałem inne warianty np display_array[x][4], ale też nie działa.
Mógłby mi ktoś dać wskazówkę co robię źle ?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
hurgadion



Dołączył: 06 Kwi 2011
Posty: 799
Skąd: Web :)

PostWysłany: Czw Maj 11, 2017 9:20 pm      Temat postu: Odpowiedz z cytatem Pisownia

Hej,
tak na początek, to może zmień:
Kod:

for x in object_array:
    if x[0] in display_array:
        print(x[0])


może na
Kod:

for x in object_array:
     for elem in display_array:
            if x[0] in elem:
                print(x[0])


_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
Guaz



Dołączył: 21 Cze 2017
Posty: 2

PostWysłany: Sro Cze 21, 2017 12:22 am      Temat postu: Odpowiedz z cytatem Pisownia

Polecam poczytać dokumentację modułu collections.

Jako że są to listy dwuwymiarowe, i będzie porównywane wiele elementów z wieloma innymi, wstępnie wymagałoby to czterech pętli iterujących, jeśli robimy by po prostu działało, napiszę to pseudokodem:
Kod:

for lista w pierwszym_zbiorze:
    for element w liście_pierwszego_zbioru:
        for lista w drugim_zbiorze:
            if element (z listy pierwszego zbioru) in lista_drugiego_zbioru:
                #ciąg instrukcji



Oczywiście są ku temu optymalniejsze metody, ale spróbuj najpierw zrobić coś działającego. I nie zapomnij o optymalizacjach po napisaniu :).

_________________
Python 3.5.2
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Python Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




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

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