Heim  >  Artikel  >  Backend-Entwicklung  >  Wie füge ich mit Python schnell Variablen in ein sortiertes Array ein?

Wie füge ich mit Python schnell Variablen in ein sortiertes Array ein?

WBOY
WBOYnach vorne
2023-05-09 22:49:201300Durchsuche

Verwenden von Sortieren und sortierter Sortierung

Ändern und generieren Sie neue Variablen an Ort und Stelle

Beim Erlernen von Python ist die schnelle Sortierfunktion der Liste ein Pflichtkurs für uns. Um eine Methode zum schnellen Einfügen einer geordneten Sequenz vorzustellen, schauen wir uns zunächst die Unterschiede und Zusammenhänge zwischen den beiden Sortierfunktionen an. Schauen wir uns zunächst sort() an. Schauen Sie sich bitte den folgenden Code an:

import random
# 随机生成10个100以内的整数
example_list = [random.randint(1,100) for i in range(10)]
# 对他们进行排序
example_list.sort()
print(example_list)

>>> [22, 28, 35, 47, 49, 55, 68, 79, 87, 98]

Es ist zu beachten, dass die Funktion **sort()** hier nicht vorhanden ist Beliebiger Rückgabewert, aber Sortierung vor Ort, siehe folgenden Code:

import random
example_list = [random.randint(1,100) for i in range(10)]
example_list_sort_test = example_list.sort()
print(example_list_sort_test)

>>> None

Wenn wir eine neue Variable verwenden, um den sortierten Inhalt zu empfangen, stellen wir fest, dass wir None erhalten. Aber **sorted()** ist genau das Gegenteil. Es wird eine neue Variable zum Speichern der sortierten Liste generiert. Bitte schauen Sie sich den folgenden Code an:

import random
example_list = [random.randint(1,100) for i in range(10)]
example_list_sorted_test = sorted(example_list)
print(example_list_sorted_test)

>>> [6, 14, 14, 20, 28, 50, 58, 58, 71, 83]

Wie Sie sehen können, verwenden wir **. sorted ()** Beim Sortieren wird ein neuer Variablenspeicher generiert und von uns abgerufen.

Gemeinsame Parameter

Natürlich haben die von den beiden Sortierfunktionen verwendeten Parameter weitgehend den gleichen Inhalt:

import random # 导入 random 模块,用于生成随机数

# 创建一个包含 10 个随机整数的列表,每个数的范围在 1 到 100 之间
example_list_argTest = [random.randint(1, 100) for i in range(10)]

# 将列表按升序排序并打印输出
example_list_argTest.sort()
print(example_list_argTest)

# 将列表按降序排序并打印输出
example_list_argTest.sort(reverse=True)
print(example_list_argTest)

# 创建一个包含三个子列表的列表
example_list_argTest_02 = [[5, 7], [1, 8], [9, 6]]
print(example_list_argTest_02)

# 对子列表按第一个元素排序并打印输出
example_list_argTest_02.sort()
print(example_list_argTest_02)

# 对子列表按第二个元素排序并打印输出
def takeSecond(test_list):
    return test_list[1]

example_list_argTest_02.sort(key=takeSecond)
print(example_list_argTest_02)

# 创建一个包含四个字符串的列表
example_list_argTest_03 = ['apple', 'big apple', 'pear', 'hen']
print(example_list_argTest_03)

# 对字符串按长度排序并打印输出
example_list_argTest_03.sort(key=len)
print(example_list_argTest_03)

>>>[4, 18, 26, 41, 43, 52, 77, 77, 97, 98]
>>>[98, 97, 77, 77, 52, 43, 41, 26, 18, 4]
>>>[[5, 7], [1, 8], [9, 6]]
>>>[[1, 8], [5, 7], [9, 6]]
>>>[[9, 6], [5, 7], [1, 8]]
>>>['apple', 'big apple', 'pear', 'hen']
>>>['hen', 'pear', 'apple', 'big apple']
# 🎜🎜#Unter diesen sind die **sorted()**-Funktionsparameter gleich. Die folgenden sind häufig verwendete Parameterwerte und ihre Bedeutung:

  • key : Der Parameter kann eine Funktion als Argument akzeptieren, damit die Funktion auf jedes Element in der Liste zum Sortieren angewendet wird. Diese Funktion sollte einen Parameter akzeptieren und den Wert zurückgeben, der zum Sortieren verwendet werden soll.

  • reverse: Ein optionaler Parameter, der zum Steuern der Reihenfolge verwendet wird, in der die Liste sortiert wird. Wenn „reverse“ „True“ ist, wird die Liste in absteigender Reihenfolge sortiert; wenn „reverse“ „False“ ist oder nicht angegeben ist (der Standardwert ist „False“), wird die Liste in aufsteigender Reihenfolge sortiert.

Verwenden Sie bisect, um Variablen in eine geordnete Sequenz einzufügen.

Ermitteln Sie die Position des eingefügten Elements.

bisect ist Wird zum Einfügen von Variablen in eine geordnete Sequenz verwendet. Fügt ein Element in eine sortierte Liste ein und gibt den Index nach dem eingefügten Element in die Liste zurück. Es stehen zwei Funktionen zur Verfügung, nämlich

bisect_left() und bisect_right() Offensichtlich besteht der Hauptunterschied darin, dass die eine den Index der linken Einfügung zurückgibt und die andere will Gibt den Index rechts von der Einfügung zurück. Schauen Sie sich bitte das folgende Beispiel an:

import bisect

example_list = [random.randint(1,100) for i in range(10)]
example_list.sort()
print(example_list)

left_index = bisect.bisect_left(example_list_sorted_test,58)
print(left_index)

right_index = bisect.bisect_right(example_list_sorted_test,58)
print(right_index)

>>>[9, 11, 16, 22, 40, 59, 60, 68, 83, 99]
>>>6
>>>8

Darüber hinaus verfügen die beiden oben genannten Funktionen über zwei optionale Parameter wie folgt:

    #🎜🎜 Der #lo-Parameter stellt die Startposition des Suchbereichs dar und kann verwendet werden, um eine Suche in einem Teilbereich der Liste anzugeben.
  • Der Parameter hi stellt die Endposition des Suchbereichs dar und kann verwendet werden, um eine Suche in einem Teilbereich der Liste anzugeben.
  • Wir können die oben genannten Parameter verwenden, um einen Teil des Intervalls zum Einfügen auszuwählen. Sehen Sie sich bitte das folgende Beispiel an:
test_list = list(range(10))
print(test_list)
# 指定区间搜索插入
bisect.bisect_left(test_list, 2, 3, 5)

>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>3

In diesem Beispiel Wir geben an, dass das gesuchte Intervall eingefügt wird und die Indexposition der Einfügung zurückgegeben wird.

Verwenden Sie insort, um Elemente in eine geordnete Sequenz einzufügen.

Wenn Sie Elemente in eine Liste einfügen möchten, ohne deren Sortierreihenfolge zu zerstören, können Sie **insort()* verwenden. * Funktion. Schauen Sie sich bitte das folgende einfache Beispiel an:

import bisect

sorted_list_example = [1, 3, 4, 6, 8, 9, 11]
bisect.insort(sorted_list_example, 7)
print(sorted_list_example )

>>> [1, 3, 4, 6, 7, 8, 9, 11]

Im obigen Beispiel haben wir die benutzerdefinierte Variable in das geordnete Array eingefügt.

Ein Anwendungsbeispiel

Angenommen, wir möchten die Eingabeergebnisse tatsächlich mit der oben vorgestellten Methode schreiben: #🎜🎜 #
def grade(score, breakpoints = [60,70,80,90], grades='FDCBA'):
    index = bisect.bisect(breakpoints, score)
    return grades[index]

random_grades = [random.randint(1,100) for i in range(10)]
print(random_grades)

print([grade(s) for s in random_grades])

>>>[27, 28, 35, 89, 20, 61, 20, 89, 53, 92]
>>>['F', 'F', 'F', 'B', 'F', 'D', 'F', 'B', 'F', 'A']

Durch die rationale Verwendung der obigen Funktion zum Einfügen der Sequenz haben wir eine Leistungsbewertungsfunktion abgeschlossen und die Bewertungen zurückgegeben, die verschiedenen Punktzahlen entsprechen.

Das obige ist der detaillierte Inhalt vonWie füge ich mit Python schnell Variablen in ein sortiertes Array ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen