Acasă - Serviciu
Nivel avansat. Liste în Python

În Python, generatoarele simple și generatoarele de liste sunt două lucruri diferite. Există o problemă cu traducerea din engleză. Ceea ce obișnuiam să numim un generator de liste în engleză sună ca „ înțelegerea listei„și nu are nicio legătură cu generatoarele.

Cuvântul „înțelegere” (înțelegere, înțelegere) pare a fi în afara subiectului când este tradus în rusă. Se dovedește ceva de genul „înțelegerea listei”. Prin urmare, spunem „generator de liste”, adică prin cuvântul „generator” nu un obiect, ci o construcție sintactică care generează, adică creează, o listă.

Pe de altă parte, obiectele generatoare sunt obiecte cu funcții speciale care își păstrează starea între apeluri. Într-o buclă for, ele se comportă ca obiecte iterabile, care includ liste, dicționare, șiruri de caractere etc. Cu toate acestea, generatoarele acceptă metoda __next__(), ceea ce înseamnă că sunt un tip de iterator.

O modalitate rapidă de a crea obiecte generatoare relativ simple este expresiile generatoare - expresii generatoare. Sintaxa acestor expresii este similară cu cea a generatoarelor de liste. Cu toate acestea se întorc diferite tipuri obiecte. Primul este un obiect generator. Al doilea este o listă.

Să ne uităm mai întâi la generatoarele de liste pentru a ne obișnui cu structura sintactică.

Lista generatoare

În Python, generatoarele de liste vă permit să creați și să completați rapid liste.

Construcția sintactică a unui generator de liste presupune prezența unui obiect iterabil sau iterator, pe baza căruia va fi creat noua lista, precum și o expresie care va face ceva cu elementele extrase din secvență înainte de a le adăuga la lista generată.

>>> a = [ 1 , 2 , 3 ] >>> b = [ i+10 pentru i în a] >>> a [ 1 , 2 , 3 ] >>> b [ 11 , 12 , 13 ]

În exemplul de mai sus, generatorul de liste este expresia. Aici a este un obiect iterabil. În acest caz, este o listă diferită. Fiecare element este preluat dintr-o buclă for. Înainte pentru, este descrisă acțiunea care este efectuată asupra elementului înainte de a fi adăugat la noua listă.

Vă rugăm să rețineți că generatorul creează o listă nouă și nu modifică una existentă. Dacă trebuie să modificați variabila curentă, trebuie să îi atribuiți o nouă valoare:

>>> a = [ 1 , 2 , 3 ] >>> a = [ i+10 pentru i în a] >>> a [ 11 , 12 , 13 ]

Generatoarele de liste sunt clasificate ca „zahăr sintactic” a limbii Programare Python. Cu alte cuvinte, te poți descurca fără ele:

>>> pentru index, valoare din enumerarea (a): ... a [ index] = valoare + 10 ... >>> a [ 11 , 12 , 13 ]

Dacă un program poate avea mai multe referințe la o listă, generatoarele trebuie utilizate cu atenție:

>>> ls0 = [ 1 , 2 , 3 ] >>> ls1 = ls0 >>> ls1.append (4 ) >>> ls0 [ 1 , 2 , 3 , 4 ] >>> ls1 = [ i+1 pentru i în ls1] >>> ls1 [ 2 , 3 , 4 , 5 ] >>> ls0 [ 1 , 2 , 3 , 4 ]

Aici presupunem că modificările aduse listei printr-o variabilă vor fi vizibile prin alta. Cu toate acestea, dacă modificați lista cu un generator, variabilele vor indica liste diferite.

Obiectul iterat într-o buclă for poate fi mai mult decât o listă. În exemplul de mai jos, liniile dintr-un fișier sunt plasate în listă.

>>> linii = [ line.strip () pentru linia deschisă ("text.txt") ] >>> linii [ "unu", "două" , "trei" ]

Puteți adăuga o condiție la generatorul de liste:

>>> din import aleatoriu randint >>> nums = [ randint(10 , 20 ) pentru i în intervalul (10 ) ] >>> nums [ 18 , 17 , 11 , 11 , 15 , 18 , 11 , 20 , 10 , 19 ] >>> numere = [ i pentru i în numere dacă i%2 == 0 ] >>> numere [ 18 , 18 , 20 , 10 ]

Generatoarele de liste pot conține bucle imbricate:

>>> a = "12" >>> b = "3" >>> c = "456" >>> comb = [ i+j+k pentru i în a pentru j în b pentru k în c] >> > pieptene [ "134" , "135" , "136" , "234" , "235" , "236" ]

Dicționar și generatoare de set

Dacă înlocuiți parantezele pătrate cu paranteze în expresia generatorului de liste, puteți obține nu o listă, ci un dicționar:

>>> a = ( i:i**2 pentru i în intervalul (11, 15) ) >>> a ( 11: 121, 12: 144, 13: 169, 14: 196)

În acest caz, sintaxa expresiei înainte de for trebuie să corespundă dicționarului, adică să includă cheia și valoarea separate prin două puncte. Dacă nu este cazul, va fi generat un set:

>>> a = ( i pentru i în intervalul (11 , 15 ) ) >>> o mulţime ([ 11 , 12 , 13 , 14 ] ) >>> b = ( 1 , 2 , 3 ) >>> b set ([ 1 , 2 , 3 ] )

Generatoare

Expresiile care creează obiecte generatoare sunt similare cu expresiile care creează liste, dicționare și seturi, cu o singură excepție. Pentru a crea un obiect generator, trebuie să folosiți paranteze:

>>> a = (i pentru i în intervalul (2 , 8 ) ) >>> a< generator object < genexpr>la 0x7efc88787910 > >>> pentru i în a: ... imprimați (i) ... 2 3 4 5 6 7

Nu va fi posibil să repetați a doua oară prin generator într-o buclă for, deoarece obiectul generator a generat deja toate valorile în conformitate cu „formula” încorporată în el. Prin urmare, generatoarele sunt de obicei utilizate atunci când trebuie să iterați o dată peste un obiect iterabil.

În plus, generatoarele economisesc memorie, deoarece nu stochează toate valorile, de exemplu, unei liste mari, ci doar elementul anterior, limita și formula utilizată pentru a calcula următorul element.

Expresia care creează generatorul este o versiune scurtă a următoarelor:

>>> def func(start, finish) : ... while start< finish: ... yield start * 0.33 ... start += 1 ... >>> a = func(1 , 4 ) >>> a< generator object func at 0x7efc88787a50 >>>> pentru i în a: ... imprimați (i) ... 0,33 0,66 0,99

Dacă nu trebuie să utilizați o funcție de mai multe ori, este mai ușor să utilizați o expresie:

>>> b = (i*0,33 pentru i în intervalul (1 , 4 ) ) >>> b< generator object < genexpr>la 0x7efc88787960 > >>> pentru i în b: ... imprimați (i) ... 0,33 0,66 0,99

| |

Listele de înțelegere vă permit să creați rapid o listă bazată pe listele existente. Folosind un generator, puteți construi o listă bazată pe orice tip de date iterabile (de exemplu, șiruri sau tupluri).

Ca rezultat, bucla va crea aceeași listă:

["8", "h", "o", "s", "t"]

Expresii condiționate în generatoarele de liste

Generatorii de liste pot folosi expresii condiționate pentru a modifica listele existente sau alte tipuri de date secvențiale, rezultând o nouă listă.

Să ne uităm la un generator cu o declarație if:

fish_tuple = ("pește suflat", "pește clovn", "pește somn", "caracatiță")
lista_pestilor =
print(lista_pesti)

Lista folosește tuplul fish_tuple ca bază pentru o nouă listă de pești.

Cuvintele cheie pentru și în sunt utilizate în același mod ca în dimensiunea anterioară. În plus, generatorul conține o instrucțiune if, care îl face să excludă șirul „caracatiță” din listă.

Interogați conținutul fish_list și asigurați-vă că acesta conține toate elementele fish_tuple, cu excepția „octopus”.

["blowfish", "clownfish", "somn"]

După cum puteți vedea, folosind o expresie condiționată puteți exclude un anumit element din noua listă.

Acum să ne uităm la un alt exemplu care utilizează operații matematice, numere și metoda range().


print(lista_numere)

Citeste si:

Noua listă number_list va conține valorile pătrate ale fiecărui element par în intervalul 0-9. Rezultatul va fi o listă ca aceasta:

Să ne uităm la acest exemplu pas cu pas. Dacă în loc de x ** 2 pentru x folosim doar x pentru x, lista va arăta astfel:

listă_număre =
print(lista_numere)

După aceasta, la generator a fost adăugată o expresie condiționată:

listă_număre =
print(lista_numere)

Declarația if a eliminat toate numerele impare din listă.

Acum tot ce rămâne este să adăugați un operator care va pătra toate elementele:

listă_număre =
print(lista_numere)

Acum fiecare element al listei va fi pătrat.

De asemenea, puteți utiliza instrucțiuni imbricate if în generatoare:

listă_număre =
print(lista_numere)

Astăzi voi vorbi despre un tip de date precum liste, operații asupra acestora și metode, despre generatoarele de liste și utilizarea listelor.

Ce sunt listele?

Listele în Python sunt colecții ordonate, mutabile de obiecte de tipuri arbitrare (la fel ca o matrice, dar tipurile pot diferi).

Pentru a utiliza liste, trebuie să le creați. Există mai multe moduri de a crea o listă. De exemplu, puteți procesa orice obiect iterabil (de exemplu, ) cu o funcție încorporată listă:

>>> listă („listă”) ["listă"]

De asemenea, puteți crea o listă folosind un literal:

>>> s = # Lista goală >>> l = [ "s" , "p" , [ "isok" ], 2 ] >>> s >>> l ["s", "p", ["isok „], 2]

După cum puteți vedea din exemplu, lista poate conține orice număr de obiecte (inclusiv liste imbricate) sau nu poate conține nimic.

Și un alt mod de a crea o listă este generatoare de liste. Un generator de liste este o modalitate de a construi o nouă listă prin aplicarea unei expresii fiecărui element al unei secvențe. Generatoarele de liste sunt foarte asemănătoare cu o buclă.

>>> c = [ c * 3 pentru c în "listă" ] >>> c ["lll", "iii", "sss", "ttt"]

Este posibil și un design mai complex al generatorului de liste:

>>> c = [ c * 3 pentru c în "listă" dacă c != "i" ] >>> c ["lll", "sss", "ttt"] >>> c = [ c + d pentru c în „listă” dacă c != „i” pentru d în „spam” dacă d != „a” ] >>> c ["ls", "lp", "lm", "ss", "sp", "sm", "ts", "tp", "tm"]

Dar în cazuri dificile este mai bine să folosiți obișnuitul pentru buclă pentru a genera liste.

Enumeră funcțiile și metodele

Creați creat, acum trebuie să faceți ceva cu lista. Metodele de bază și de listă sunt disponibile pentru liste.

Tabelul „Listă metode”

MetodăCe face
listă.anexează(x)Adaugă un element la sfârșitul listei
listă.extinde(L)Extinde lista prin adăugarea tuturor elementelor listei L
lista.inserare(i, x)Inserează valoarea x pe al i-lea element
listă.elimină(x)Îndepărtează primul element din listă care are valoarea x. ValueError dacă nu există un astfel de element
listă.pop([i])Îndepărtează elementul i-lea și îl returnează. Dacă indexul nu este specificat, ultimul element este eliminat
listă.index(x, ])Returnează poziția primului element cu valoarea x (căutând de la început până la sfârșit)
listă.număr(x)Returnează numărul de elemente cu valoarea x
lista.sortare() Sortează o listă pe baza unei funcții
lista.revers() Extinde lista
lista.copie() Copie superficială a listei
lista.clear() Șterge lista

Trebuie remarcat faptul că metodele listă, spre deosebire de , modifică lista însăși și, prin urmare, rezultatul execuției nu trebuie să fie scris în această variabilă.

>>> l = [ 1 , 2 , 3 , 5 , 7 ] >>> l . sort() >>> l >>> l = l . sort() >>> print(l) Niciuna

Și, în sfârșit, exemple de lucru cu liste:

>>> a = [ 66,25 , 333 , 333 , 1 , 1234,5 ] >>> print ( a . număr ( ​​333 ), a . număr ( ​​66,25 ), a . număr ( ​​" x " )) 2 1 0 >>> o. introduceți (2 , - 1 ) >>> a . anexează (333 ) >>> a >>> a . indice (333 ) 1 >>> a . elimina (333 ) >>> a >>> a . invers () >>> a >>> a . sort() >>> a [-1, 1, 66.25, 333, 333, 1234.5]

Ocazional, pentru a crește productivitatea, listele sunt înlocuite cu altele mult mai puțin flexibile

Limbajul de programare Pyrhon are o structură sintactică specială care vă permite să creați liste completate pe baza anumitor reguli. Listele generate pot fi diferite, conținutul structurii poate fi diferit, motiv pentru care se numesc generatoare de liste. Sunt convenabile deoarece intrările nu sunt atât de lungi ca în metoda tradițională de creare a listelor.

De exemplu, aveți nevoie de o listă de numere naturale până la un anumit număr. Metoda tradițională ar arăta astfel:

>>> a = >>> pentru i în intervalul(1,15): ... a.apend(i) ... >>>

Lista avea trei linii de cod. Și generatorul are nevoie doar de unul:

>>> a = >>> a

Construcția este un generator de liste. Toate modelele trebuie plasate în liste pătrate, ceea ce reflectă crearea listei. Există trei părți în interiorul parantezelor:

  1. Ce vom face cu elementele (în situația noastră nu facem nimic, doar le adăugăm pe listă).
  2. Ce vom lua (luam elementul i).
  3. De unde îl vom lua (de la obiectul de gamă). Pentru a separa părțile folosim cuvintele cheie în și pentru.

Să ne uităm la un exemplu

>>> a = >>> b = >>> b

În această situație, luăm fiecare element din listă și îl pătram. De aici:

  1. Ceea ce facem este să pătrundă elementul nostru.
  2. Să luăm - element.
  3. Din: din lista a.
>>> a = (1:10, 2:20, 3:30) >>> b = pentru i în a] >>> b

Aici luăm cheia în dicționar, iar produsul cheii și valoarea sa existentă este inclus în lista generată.

>>> a = (1:10, 2:20, 3:30) >>> b = [] pentru i în a] >>> b [, , ] >>> c = >>> c

În acest caz, lista b conține liste imbricate. Omiterea parantezelor pătrate din expresia ] din generator ar duce la o eroare. Dacă doriți o listă cu un singur nivel cu chei din valorile de dicționar, trebuie să luați fiecare listă imbricată și să luați fiecare componentă de acolo. Acest lucru se face cu un construct imbricat. Sintaxa tradițională pentru generarea unei liste este următoarea:

>>> c = >>> pentru i în b: ... pentru j în i: ... c.append(j) ... >>> c

Generatoarele de liste pot fi completate cu un construct if. De exemplu, trebuie să extrageți toate numerele dintr-un șir:

>>> a = "lsj94ksd231 9" >>> b =

Sau completați lista cu numere care sunt multipli de 31 sau 30:

>>> a = >>> a

Crearea listelor în acest fel este mult mai ușoară și mai rapidă. Dar nu sunt potrivite pentru înlocuirea structurilor destul de complexe. De exemplu, dacă condiția de verificare conține o ramură else.

Rămâneți fără bani și mai sunt câteva săptămâni până la ziua de plată? Îl poți împrumuta, dar dacă nu ai pe nimeni? Nu mergeți la bancă pentru un împrumut. În acest caz, microcreditele vă vor ajuta. Doar intră pe site, completează o aplicație (este foarte simplă și rapidă) și în câteva minute vei primi banii! Este foarte convenabil și rapid și, cel mai important, nu trebuie să întrebi pe nimeni!

Fiecare limbaj de programare are o astfel de caracteristică, o structură complexă, dar un lucru special simplificat. Dacă ați scris anterior într-o altă limbă, este posibil să nu acordați atenție acestui lucru, deoarece dvs limba veche nu a simplificat atât de mult chestia asta (pentru că era foarte ocupat să simplifice un alt lucru). În acest capitol, veți învăța generatoare de liste, dicționar și set - trei concepte înrudite centrate în jurul unei tehnologii foarte puternice. Dar mai întâi, vreau să fac un mic ocol pentru a vă spune despre două module care vă vor ajuta să navigați în sistemul dvs. de fișiere local.

Lucrul cu fișiere și directoare

Python 3 vine cu un modul os, ceea ce înseamnă " sistem de operare" conține multe funcții pentru obținerea de informații despre directoare locale, fișiere, procese și variabile de mediu(și în unele cazuri, pentru a le manipula). Python oferă un foarte bun unificat interfata software Pentru toate sistemele de operare acceptate, astfel încât programele dvs. să poată rula pe orice computer cu o cantitate minimă de cod dependent de platformă.

Director de lucru curent

Când începi pentru prima dată să înveți Python, petreci mult timp shell interactiv Python. Pe parcursul acestei cărți, veți vedea exemple care arată astfel:

  1. Importul unui modul din folderul exemple
  2. Apelarea unei funcții din acest modul
  3. Explicația rezultatului

Există întotdeauna un director de lucru curent.

Dacă nu știți nimic despre directorul de lucru curent, atunci este posibil ca pasul 1 să eșueze și să arunce o excepție precum ImportError. De ce? Deoarece Python va căuta modulul specificat în căile de căutare ale operatorilor import, dar nu îl va găsi deoarece directorul de exemple nu se află în calea de căutare. Pentru a remedia acest lucru, puteți face unul dintre cele două lucruri:

  • sau adăugați folderul de exemple la calea de căutare a operatorului import;
  • sau faceți din folderul de exemple directorul de lucru curent.

Directorul de lucru curent este un parametru implicit pe care Python îl păstrează în memorie în orice moment. Directorul de lucru curent este întotdeauna acolo când lucrați în shell-ul interactiv Python, rulând scriptul dvs. de la linie de comandă sau un script CGI undeva pe un server web.

Modul os conține două funcții pentru lucrul cu directorul de lucru curent.

>>> import os

>>> print(os.getcwd())
C:\Python31

>>> os .chdir()

>>> print(os.getcwd())

Lucrul cu nume de fișiere și directoare

Întrucât vorbim de directoare, vreau să vă atrag atenția asupra modulului os.cale. Conține funcții pentru lucrul cu nume de fișiere și directoare.

>>> import os

>>> print (os .path .join ( „/Utilizatori/pelgrim/diveintopython3/exemple/”, „humansize.py” ) )
/Utilizatori/pelgrim/diveintopython3/examples/humansize.py

>>> print (os .path .join ( „/Utilizatori/pelgrim/diveintopython3/exemple”, „humansize.py” ) )
/Utilizatori/pelgrim/diveintopython3/examples\humansize.py

>>> print (os .path .expanduser ("~" ) )
c:\Utilizatori\pelerin

>>> print (os .path .join (os .path .expanduser ("~") , "diveintopython3" , "examples" , "humansize.py" ) )
c:\Utilizatori\pelgrim\diveintopython3\examples\humansize.py

Modul os.cale conține, de asemenea, funcții pentru împărțirea căilor fișierelor, numelor de foldere și fișierelor în părțile lor componente.

>>> calea = „/Utilizatori/pelgrim/diveintopython3/examples/humansize.py”

>>> os .path .split (nume cale)
(„/Utilizatori/pelgrim/diveintopython3/exemple”, „humansize.py”)

>>> (dirname, filename) = os .path .split (nume cale)

>>> dirname
„/Utilizatori/pelgrim/diveintopython3/exemple”

>>> nume de fișier
„humansize.py”

>>> (nume scurt, extensie) = os .path .splitext (nume fișier)
>>> nume scurt
"dimensiune umană"
>>> extensie
„.py”

Obținerea conținutului directorului

Modulul glob înțelege caracterele wildcard utilizate în shell-uri.

Modul glob este un alt instrument din biblioteca standard Python. Este o modalitate ușoară de a obține în mod programatic conținutul unui folder și, de asemenea, folosește metacaractere, cu care probabil ești familiarizat dacă ai lucrat pe linia de comandă.

>>> os .chdir ( „/Utilizatori/pelgrim/diveintopython3/”)
>>> import glob

>>> glob .glob ("examples/*.xml")
["exemple \\feed-broken.xml",
„exemple \\feed-ns0.xml",
„exemple \\feed.xml"]

>>> os .chdir ("exemple/")

>>> glob .glob ("*test*.py")
["alphameticstest.py" ,
"pluraltest1.py" ,
"pluraltest2.py" ,
"pluraltest3.py" ,
"pluraltest4.py" ,
"pluraltest5.py" ,
"pluraltest6.py" ,
"romantest1.py",
"romantest10.py",
"romantest2.py",
"romantest3.py",
"romantest4.py",
"romantest5.py",
"romantest6.py",
"romantest7.py",
"romantest8.py",
„romantest9.py”]

Obținerea de informații despre un fișier

Orice sistem de operare modern stochează informații despre fiecare fișier (metadate): data creării, data ultimei modificări, dimensiunea fișierului etc. Python oferă un singur interfata software pentru a accesa aceste metadate. Nu trebuie să deschideți fișierul; tot ceea ce este necesar este un nume de fișier.

>>> import os

>>> print(os.getcwd())
c:\Utilizatori\pelgrim\diveintopython3\exemple

>>> metadate = os .stat ("feed.xml")

>>> metadata.st_mtime
1247520344.9537716

>>> timpul de import

>>> time .localtime (metadata.st_mtime )
time .struct_time (tm_year= 2009, tm_mon= 7, tm_mday= 13, tm_hour= 17, tm_min= 25,
tm_sec= 44 , tm_wday= 0 , tm_yday= 194 , tm_isdst= 1 )

Obținerea de căi absolute

În secțiunea anterioară funcția glob.glob() a returnat o listă de căi relative. În primul exemplu, căile arătau ca „examples\feed.xml” , iar în al doilea căile relative erau chiar mai scurte, de exemplu, „romantest1.py” . Atâta timp cât rămâneți în directorul de lucru actual, aceste căi relative vă vor permite să deschideți fișiere sau să le preluați metadatele. Dar dacă doriți să obțineți o cale absolută - adică una care include toate numele de director până la rădăcină sau până la litera unității, veți avea nevoie de funcția os.path.realpath().

>>> import os
>>> print(os.getcwd())
c:\Utilizatori\pelgrim\diveintopython3\exemple
>>> print (os .path .realpath ("feed.xml"))

c:\Utilizatori\pelgrim\diveintopython3\examples\feed.xml

Lista generatoare

Puteți utiliza orice expresie Python în generatoarele de liste.

Cu generatoarele de liste, puteți mapa cu ușurință o listă la alta, aplicând o anumită funcție fiecărui element.

>>> a_list = [ 1 , 9 , 8 , 4 ]
>>> [ elem * 2 pentru elem în a_listă]
[ 2 , 18 , 16 , 8 ]

>>> a_listă
[ 1 , 9 , 8 , 4 ]

>>> a_list = [ elem * 2 pentru elem în a_list]
>>> a_listă
[ 2 , 18 , 16 , 8 ]

Generatoarele de liste pot folosi orice expresie Python, inclusiv funcțiile modulului os, folosit pentru a lucra cu fișiere și directoare.

>>> import os , glob
>>> glob .glob ("*.xml")
[ „feed-broken.xml” , „feed-ns0.xml” , „feed.xml” ]

>>> [ os .path .realpath (f) pentru f în glob .glob ("*.xml") ]
["c:,
"c:,
"c:]

Când generați liste, puteți, de asemenea, să filtrați elemente pentru a elimina unele valori.

>>> import os , glob

>>> [ f pentru f în glob .glob ("*.py") dacă os .stat (f) .st_size > 6000 ]
["pluraltest6.py" ,
"romantest10.py",
"romantest6.py",
"romantest7.py",
"romantest8.py",
„romantest9.py”]

Toate exemplele de generatoare de liste discutate au folosit expresii simple: înmulțirea unui număr cu o constantă, apelarea unei singure funcții sau pur și simplu returnarea unui element de listă neschimbat (după filtrare). Dar atunci când generați liste, puteți utiliza expresii de orice complexitate.

>>> import os , glob

>>> [ (os .stat (f) .st_size , os .path .realpath (f) ) pentru f în glob .glob ("*.xml") ]
[(3074, "c: \\ Utilizatori\\ pilgrim\\ diveintopython3\\ exemple\\ feed-broken.xml") ,
(3386, „c: \\ Utilizatori\\ pilgrim\\ diveintopython3\\ exemple\\ feed-ns0.xml") ,
(3070, "c: \\ Utilizatori\\ pilgrim\\ diveintopython3\\ exemple\\ feed.xml") ]
>>> import uman

>>> [ (humansize.approximate_size (os .stat (f) .st_size , f) pentru f în glob .glob ("*.xml") ]
[(„3.0 KiB” , „feed-broken.xml”) ,
("3,3 KiB" , "feed-ns0.xml") ,
("3,0 KiB" , "feed.xml") ]

Dicţionar generators

Un generator de dicționar este similar cu un generator de liste, dar în loc de o listă, creează un dicționar.

>>> import os , glob

>>> metadate = [ (f, os .stat (f) ) pentru f în glob .glob ("*test*.py" ) ]

>>> metadate[ 0 ]
("alphameticstest.py" , nt.stat_result (st_mode= 33206 , st_ino= 0 , st_dev= 0 ,
st_nlink= 0 , st_uid= 0 , st_gid= 0 , st_size= 2509 , st_atime= 1247520344 ,
st_mtime= 1247520344 , st_ctime= 1247520344 ) )

>>> metadata_dict = ( f:os .stat (f) pentru f în glob .glob ("*test*.py" ) )

>>> tip (metadata_dict)
< class "dict" >

>>> list(metadata_dict.keys())
[ "romantest8.py" , "pluraltest1.py" , "pluraltest2.py" , "pluraltest5.py" ,
"pluraltest6.py" , "romantest7.py" , "romantest10.py" , "romantest4.py" ,
"romantest9.py" , "pluraltest3.py" , "romantest1.py" , "romantest2.py" ,
"romantest3.py" , "romantest5.py" , "romantest6.py" , "alphameticstest.py" ,
„pluraltest4.py”]

>>> metadata_dict[ "alphameticstest.py" ] .st_size
2509

La fel ca în generatoarele de liste, puteți include o condiție în generatoarele de dicționar dacă pentru a filtra secvența de intrare folosind o expresie condiționată care este evaluată pentru fiecare element.

>>> import os , glob , humansize



 


Citire:



Utilizarea stilurilor în Excel Cum să vă creați propriul stil nou

Utilizarea stilurilor în Excel Cum să vă creați propriul stil nou

Dacă utilizați în mod constant aceleași opțiuni pentru a formata celulele foii de lucru din foile de calcul, ar putea fi înțelept să creați un stil de formatare...

Ce erori apar în timpul instalării?

Ce erori apar în timpul instalării?

Notă: Programele AutoLISP pot fi executate numai pe versiunea completă a AutoCAD, ele nu funcționează sub AutoCAD LT. (excluzând cazurile de încărcare...

Statutul social al unei persoane în societate

Statutul social al unei persoane în societate

Sugerați ceea ce determină alegerea unei persoane cu privire la statutul său principal. Folosind textul și faptele vieții sociale, faceți două presupuneri și...

Interpretarea completă a erorilor

Interpretarea completă a erorilor

Destul de mulți utilizatori s-au confruntat cu fenomenul ecranului albastru al morții. Ce trebuie să faceți (Windows 7 este cel mai adesea predispus la această problemă)...

imagine-alimentare RSS