El bisecteu El mòdul de Python proporciona funcions senzilles i ràpides (basades en cerca binària) per cercar un element en una llista ordenada, trobar la posició correcta per inserir nous elements i inserir nous elements assegurant-se que la llista romangui ordenada.
Per què necessitem el mòdul Bisect?
- Útil per a operacions de cerca binària per cercar en una llista ordenada i per localitzar punts d'inserció.
- Proporciona mètodes eficients per inserir elements en una llista ordenada tot mantenint l'ordre.
- Evita la necessitat d'ordenar manualment després de cada inserció estalviant temps i esforç.
- Ofereix funcions com bisect() bisect_left() bisect_right() i insort() per a un codi net optimitzat.
- Ideal per a tasques com el manteniment de les taules de classificació de les dades classificades o qualsevol escenari que inclogui la inserció/cerca de dades ordenades.
Funcions bàsiques del mòdul Bisect
El mòdul bisect ofereix principalment dos tipus de funcionalitats:
- Trobar el punt d'inserció (sense inserció)
- Inserció d'elements a la posició correcta
1. Trobar punts d'inserció
Aquestes funcions retornen l'índex on s'ha d'inserir l'element nou per mantenir la llista ordenada.
a) bisect.bisect(): Retorna el punt d'inserció més a la dreta de l'element. Si l'element ja existeix, el punt d'inserció estarà després de les entrades existents.
bisect.bisect(número llista beg=0 final=len(llista))
Paràmetre:
- llista: Llista ordenada.
- num: Element a inserir.
- suplicar: Inicia l'índex per a la cerca (opcional).
- final: Índex final per a la cerca (opcional).
b) bisect.bisect_left(): Retorna el punt d'inserció més a l'esquerra de l'element. Si l'element existeix, el punt d'inserció estarà abans de les entrades existents.
intel·ligència artificial i agents intel·ligents
bisect.bisect_left(núm. llista beg=0 final=len(llista))
c) bisect.bisect_right(): Idèntic a bisect.bisect() retorna el punt d'inserció més a la dreta.
bisect.bisect_right (núm. llista beg=0 final=len (llista))
Exemple: Trobeu índexs d'inserció per al valor 4 en una llista ordenada mitjançant diferents funcions de bisectriu.
Pythonimport bisect li = [1 3 4 4 4 6 7] print(bisect.bisect(li 4)) # right print(bisect.bisect_left(li 4)) # left print(bisect.bisect_right(li 4 0 4)) # subright
Sortida
5 2 4
Explicació:
- bisecte (li 4): Retorna 5 perquè troba la posició més dreta després dels últims 4 de la llista (índex 4), de manera que el punt d'inserció és 5.
- bisect_esquerra (li 4): Retorna 2 perquè troba la posició més a l'esquerra abans dels 4 primers de la llista (índex 2).
- bisect_dreta (li 4 0 4): Funciona només a la subllista això[0:4] i retorna 4 perquè insereix 4 després dels últims 4 de la subllista.
2. Inserció d'elements
Aquestes funcions insereixen l'element a la posició adequada per mantenir l'ordenació.
a) bisect.insort(): Insereix l'element a la posició més dreta. A diferència de les funcions bisect(), això en realitat modifica la llista inserint l'element.
bisect.insort (número llista beg=0 final=len (llista))
ordres sql ddl
Paràmetre:
- llista: Llista ordenada.
- num: Element a inserir.
- beg (opcional): Inici índex per a la inserció (0 per defecte).
- final (opcional): Índex final per a la inserció (len(llista) per defecte).
b) bisect.insort_left(): Insereix l'element a la posició més esquerra.
bisect.insort_left(núm. llista beg=0 final=len(llista))
c) bisect.insort_right(): Insereix l'element a la posició més dreta (semblant a insort()).
bisect.insort_right (número llista beg=0 final=len (llista))
Exemple: Inseriu el valor 5 en una llista ordenada mantenint-lo ordenat mitjançant diferents estratègies d'inserció.
Pythonimport bisect l1 = [1 3 4 4 4 6 7] l2 = [1 3 4 4 4 6 7] l3 = [1 3 4 4 4 6 7] bisect.insort(l1 5) # right print(l1) bisect.insort_left(l2 5) # left print(l2) bisect.insort_right(l3 5 0 4) # subright print(l3)
Sortida
[1 3 4 4 4 5 6 7] [1 3 4 4 4 5 6 7] [1 3 4 4 5 4 6 7]
Explicació:
- sorgir (l1 5) insereix 5 a la posició més adequada a la dreta: després dels 4 i abans de les 6.
- insort_left(l2 5) insereix 5 a la posició adequada més a l'esquerra, igual que insereix aquí, ja que 5 no és a la llista.
- insort_right(l3 5 0 4) insereix 5 a l'índex 4 que només funciona a la subllista l3[0:4] = [1 3 4 4] després de l'últim ≤ 5 d'aquest rang sense afectar la resta de la llista.