Biblioteca Python fácil de esquecer

Biblioteca Python fácil de esquecer

Outras bibliotecas, como insect, deque e queue podem consultar: https://blog.csdn.net/a40850273/article/details/95356001 

função cmp_to_key em functools

O Python 3 cancelou o parâmetro cmp das funções integradas de classificação e classificação, portanto, a classificação do Python 3 só pode aceitar funções com uma única variável de entrada como parâmetro-chave. No entanto, uma função com dois parâmetros de entrada pode ser passada como o parâmetro principal por meio de cmp_to_key em functools. Um exemplo simples é fornecido abaixo.

from functools import cmp_to_key 
L=[9,2,23,1,2]
 
sorted(L,key=cmp_to_key(lambda x,y:y-x))
输出:
[23, 9, 2, 2, 1]
 
 
sorted(L,key=cmp_to_key(lambda x,y:x-y))
输出:
[1, 2, 2, 9, 23]

Deve-se notar que a função passada em cmp_to_key precisa retornar positivo, negativo e zero para expressar a relação entre os dois números. Se for entendido que dois parâmetros são transmitidos em ordem, retornar um número positivo significa que a ordem dos dois números precisa ser alterada e vice-versa.

heapq heap

Heapq implementa o heap clássico e fornece os seguintes métodos:

  • heapq.heappush (heap, item) adiciona item ao heap (heap é uma lista)
  • heapq.heappop (heap) exibe o elemento superior do heap e retorna o topo do heap
  • heapq.heappushpop (heap, item) primeiro adicione o item ao heap e, em seguida, pop-lo, muito mais rápido do que heappush () e heapop ()
  • heapq.heapreplace (heap, item) pop primeiro e, em seguida, adiciona o item ao heap, que é muito mais rápido do que heapp () e, em seguida, heappush ()
  • heapq.heapify (x) Ajuste de heap da lista x, o padrão é pequeno heap superior
  • heapq.merge (* iterables) mescla várias listas e ajusta o heap e retorna um iterador da lista mesclada
  • heapq.nlargest (n, iterável, chave = Nenhum) retorna os maiores n elementos (problema Top-K)
  • heapq.nsmallest (n, iterable, key = None) retorna os menores n elementos (problema Top-K)
import heapq
import random
 
# Top-K
mylist = list(random.sample(range(100), 10))
k = 3
largest = heapq.nlargest(k, mylist)
smallest = heapq.nsmallest(k, mylist)
print('original list is', mylist)
print('largest-'+str(k), '  is ', largest)
print('smallest-'+str(k), ' is ', smallest)
 
# heapify
print('original list is', mylist)
heapq.heapify(mylist)
print('heapify  list is', mylist)
 
# heappush & heappop
heapq.heappush(mylist, 105)
print('pushed heap is', mylist)
heapq.heappop(mylist)
print('popped heap is', mylist)
 
# heappushpop & heapreplace
heapq.heappushpop(mylist, 130)    # heappush -> heappop
print('heappushpop', mylist)
heapq.heapreplace(mylist, 2)    # heappop -> heappush
print('heapreplace', mylist)
'''
original list is [99, 44, 51, 45, 24, 82, 70, 97, 83, 3]
largest-3   is  [99, 97, 83]
smallest-3  is  [3, 24, 44]
original list is [99, 44, 51, 45, 24, 82, 70, 97, 83, 3]
heapify  list is [3, 24, 51, 45, 44, 82, 70, 97, 83, 99]
pushed heap is [3, 24, 51, 45, 44, 82, 70, 97, 83, 99, 105]
popped heap is [24, 44, 51, 45, 99, 82, 70, 97, 83, 105]
heappushpop [44, 45, 51, 83, 99, 82, 70, 97, 130, 105]
heapreplace [2, 45, 51, 83, 99, 82, 70, 97, 130, 105]
'''

 

 

Acho que você gosta

Origin blog.csdn.net/a40850273/article/details/104271980
Recomendado
Clasificación