Python3 sorted() función

Python3 内置函数Python3 funciones integradas


Descripción

sorted()La función realiza operaciones de ordenación en todos los objetos iterables.

Diferencia entre sort y sorted:

sort es un método aplicado a list, mientras que sorted puede ordenar todos los objetos iterables.

El método sort de list opera sobre la lista existente, mientras que la función incorporada sorted devuelve una nueva list, en lugar de hacerlo sobre la original.

Sintaxis

Sintaxis de sorted:

sorted(iterable, key=None, reverse=False)  

Descripción de parámetros:

  • iterable -- objeto iterable.
  • key -- principalmente se usa para comparar elementos, tiene un solo parámetro; el parámetro de la función concreta se toma del objeto iterable, y especifica un elemento del objeto iterable para realizar la ordenación.
  • reverse -- regla de ordenación, reverse = True descendente, reverse = False ascendente (predeterminado).

Valor de retorno

Devuelve la lista reordenada.

Ejemplo

El siguiente ejemplo muestra la forma más sencilla de usar sorted:

>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]                      # Por defecto ascendente

También puedes usar el método list.sort() de list. Este método modifica la list original (valor de retorno None). Por lo general, este método no es tan conveniente como sorted(): si no necesitas la list original, el método list.sort() es un poco más eficiente.

>>> a=[5,2,3,1,4]
>>> a.sort()
>>> a
[1,2,3,4,5]

Otra diferencia es que el método list.sort() solo está definido para list, mientras que la función sorted() puede recibir cualquier iterable.

>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]

Usar key para ordenar en orden descendente

>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> result_list = sorted(example_list, key=lambda x: x*-1)
>>> print(result_list)
[7, 6, 5, 4, 3, 2, 1, 0]
>>>

Para realizar una ordenación inversa, también se pasa el tercer parámetro reverse=True:

>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> sorted(example_list, reverse=True)
[7, 6, 5, 4, 3, 2, 1, 0]

El siguiente es un ejemplo más complejo, que ordena la tabla de medallas. Los datos contienen las medallas de oro, plata y bronce de 15 países, usando\ncomo separador:

Ejemplo

s = Alemania 10 11 16\nItalia 10 10 20\nPaíses Bajos 10 12 14\nFrancia 10 12 11\nReino Unido 22 21 22\nChina 38 32 18\nJapón 27 14 17\nEstados Unidos 39 41 33\nComité Olímpico Ruso 20 28 23\nAustralia 17 7 22\nHungría 6 7 7\nCanadá 7 6 11\nCuba 7 3 5\nBrasil 7 6 8\nNueva Zelanda 7 6 7
stodata = s.split('\n',-1)

# Usar sorted
para = {}

for line in range(len(stodata)):
    # Cada línea de datos
    data = stodata[line].split(' ')
    print(data)
    # Construir estructura de datos para={'China': [], 'Russia': []}
    para[data[0]] = [int('-' + i) for i in data[1:]]
# Comenzar la ordenación (x
new_para = sorted(para.items(), key=lambda x: (x[1], x[0]))
print()

c=[]
for i in new_para:
     c.append((i[0]))
for j in range(15):
    print(f"{(j+1):2d}  {c[j]}")

El resultado de salida es:

['德国', '10', '11', '16']
['意大利', '10', '10', '20']
['荷兰', '10', '12', '14']
['法国', '10', '12', '11']
['英国', '22', '21', '22']
['中国', '38', '32', '18']
['日本', '27', '14', '17']
['美国', '39', '41', '33']
['俄罗斯奥委会', '20', '28', '23']
['澳大利亚', '17', '7', '22']
['匈牙利', '6', '7', '7']
['加拿大', '7', '6', '11']
['古巴', '7', '3', '5']
['巴西', '7', '6', '8']
['新西兰', '7', '6', '7']

 1  美国
 2  中国
 3  日本
 4  英国
 5  俄罗斯奥委会
 6  澳大利亚
 7  荷兰
 8  法国
 9  德国
10  意大利
11  加拿大
12  巴西
13  新西兰
14  古巴
15  匈牙利

Python3 内置函数Python3 funciones integradas

Otras extensiones