Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Podobniejakfunkcja
bisect
,funkcja
insort
przyjmujeopcjonalneargumenty
lo
i
hi
,
abyograniczyćwyszukiwaniedopodsekwencji.Istniejetakżeodmiana
insort–left
,
któraużywa
bisect–left
doznajdowaniapunktówwstawiania.
Większośćtego,cowidzieliśmydotejporywtymrozdzialedotyczysekwencjiwogól-
ności,anietylkolistczykrotek.ProgramiściPythonaczasaminadużywajątypu
list
,po-
nieważjesttakporęczny-wiem,teżtakrobiłem.Jeślijednakmamydoczynieniazlistami
liczb,lepszymsposobembędątablice.Pozostałaczęśćtegorozdziałujestimpoświęcona.
Kiedylistaniejestrozwiązaniem
Typ
list
jestelastycznyiłatwywużyciu,alewzależnościodspecyficznychwymagań
możemyznaleźćlepszeopcje.Jeślinaprzykładpotrzebujemyprzechować10milionów
wartościzmiennoprzecinkowych,tablica
array
jestznaczniebardziejwydajna,ponie-
ważtyp
array
nieprzechowujefaktyczniepełnowartościowychobiektów
oat
,ajedynie
upakowanebajtyreprezentująceichwartościmaszynowe-całkiemjaktablicawjęzyku
C.Zdrugiejstrony,jeślistaledodajemyiusuwamyelementyzkońcówlisty,jakwstruk-
turachdanychFIFOlubLIFO,
deque
(kolejkadwustronna)działaszybciej.
Jeślikodwykonujedużotestówzawartości(np.
iteminmy–collection
),roz-
ważużyciezbioru
set
dlakolekcji
my–collection
,szczególniejeślizawieraona
dużąliczbęelementów.Zbioryoptymalizowanedlaszybkiegosprawdzania
przynależności.Jednakżeniesekwencjami(ichzawartośćjestnieuporząd-
kowana).Zajmiemysięnimiwrozdziale3.
Wpozostałejczęścitegorozdziałurozważymytypyzmiennychsekwencji,któremogą
zastępowaćlistywwieluprzypadkach,zaczynającodtablic.
Tablice
Jeślilistazawieratylkoliczby,tablica
array.array
jestbardziejwydajnaniżlista
list
:
obsługujewszystkieoperacjenazmiennychsekwencjach(wtym
.pop
,
.insert
i
.extend
)
orazdodatkowemetodydoszybkiegoładowaniaizapisywania,takiejak
.frombytes
i
.tole
.
TablicaPythonajestlekkajaktablicawjęzykuC.Podczastworzeniatablicy
array
podajemykodtypu,literęwyznaczającąpodległytypwjęzykuCdoprzechowywania
poszczególnychelementówwtablicy.Naprzykład
b
tokodtypudla
signedchar
.Jeśli
utworzymy
array('b')
,każdyelementzostanieprzechowanywpojedynczymbajcieiin-
terpretowanyjakoliczbacałkowitaod-128do127.Wprzypadkuwiększychsekwencji
liczboszczędzatowielepamięci.APythonniepozwoliumieścićżadnejliczbyniepasu-
jącejdotyputablicy.
52
|
Rozdział2:Sekwencjeitablice