El papel del módulo bisect

1. Se bisectutiliza para procesar la secuencia ordenada, es decir, para mantener la secuencia ascendente ordenada.

En la fuente de bisect.pyarchivo, que structurees: insort, bisect, insort_right, insort_left, bisect_right, bisect_left. Implementar de manera aproximada la operación de inserción y la operación de búsqueda (se utilizan dos puntos).

import bisect
#二分查找
inter_list = []
bisect.insort(inter_list, 3)
bisect.insort(inter_list, 2)
bisect.insort(inter_list, 5)
bisect.insort(inter_list, 1)
bisect.insort(inter_list, 6)

print(inter_list) # [1,2,3,5,6]

Puede ver que lo que se devuelve es una secuencia de clasificación completa.

Ahora queremos insertar un nuevo dato y encontrar su posición en la secuencia.

# [1, 2, 3, 5, 6]
print(bisect.bisect(inter_list, 3))
# 3 
# 在序列下标为3的位置插入

El código fuente bisectpredeterminado es bisect_rightmétodos. Es decir, la siguiente posición del elemento repetido.

bisect_leftSe inserta en la posición anterior del elemento repetido.

# [1, 2, 3, 5, 6]
print(bisect.bisect_left(inter_list, 3))
# 2

2. Subsección

No era inter_list = []solo una lista que se definió al principio , sino que cualquier tipo de secuencia que se pueda modificar realmente funciona. Por ejemplo, un deque.

import bisect
from collections import deque

inter_list = deque()

bisect.insort(inter_list, 3)
bisect.insort(inter_list, 2)
bisect.insort(inter_list, 5)
bisect.insort(inter_list, 1)
bisect.insort(inter_list, 6)

print(bisect.bisect_left(inter_list, 3))
print(inter_list)

# 2
# deque([1, 2, 3, 5, 6])

Supongo que te gusta

Origin blog.csdn.net/weixin_43901214/article/details/106978866
Recomendado
Clasificación