Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Przykład2-18Dladanegowynikutestufunkcjagradezwracaodpowiednąocenęwpostaci
litery
>>>defgrade(score,breakpoints:[60,70,80,90],grades:'FDCBA'):
...
i:bisect.bisect(breakpoints,score)
...
returngrades[i]
...
>>>[grade(score)forscorein[33,99,77,70,89,90,100]]
['F','A','C','C','B','A','A']
Kodwprzykładzie2-18pochodzizdokumentacjimodułu
bisect
(https://docs.python.
org/3/library/bisect.html),wktórejwymienionetakżefunkcjedoużywania
bisect
jako
szybszejalternatywydlametody
index
podczaswyszukiwaniawdługichuporządkowa-
nychsekwencjachliczb.
Tefunkcjenietylkosłużądowyszukiwania,aletakżedowstawianiaelementówwpo-
sortowanychsekwencjach,comożnazobaczyćwkolejnympodrozdziale.
Wstawianiezapomocąfunkcjibisect0insort
Sortowaniejestkosztowne,więcgdyjużrazmamyposortowanąsekwencję,dobrzepo-
zostawićwtakimstanie.Dlategopowstałafunkcja
bisect.insort
.
Funkcja
insort(seq
,
item)
wstawiaelement
item
dosekwencji
seq
,utrzymującsek-
wencję
seq
wkolejnościrosnącej.Zobaczprzykład2-19ijegowynikinarysunku2-6.
Przykład2-19Insortzachowujeposortowanąsekwencjęzawszeposortowaną
importbisect
importrandom
SIZE:7
random.seed(1729)
my–list:[]
foriinrange(SIZE):
new–item:random.randrange(SIZE*2)
bisect.insort(my–list,new–item)
print('%2d->'%new–item,my–list)
Rysunek2-6Wynikiprzykładu2-19
Zarządzaniesekwencjamiuporządkowanymiprzyużyciubisect
|
51