Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk memasukkan pembolehubah ke dalam tatasusunan yang diisih menggunakan Python dengan cara yang pantas?

Bagaimana untuk memasukkan pembolehubah ke dalam tatasusunan yang diisih menggunakan Python dengan cara yang pantas?

WBOY
WBOYke hadapan
2023-05-09 22:49:201355semak imbas

Gunakan isihan dan isih untuk mengisih

Ubah suai dan jana pembolehubah baharu di tempat

Dalam proses pembelajaran python, fungsi pengisihan pantas senarai adalah kursus yang diperlukan untuk kami. Untuk memperkenalkan kaedah memasukkan urutan tertib dengan cepat, mari kita lihat dahulu perbezaan dan hubungan antara dua fungsi pengisihan. Mula-mula mari kita lihat sort(), sila lihat kod berikut:

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]

Perlu diingatkan bahawa fungsi **sort()** di sini tidak mempunyai sebarang nilai pulangan , tetapi lakukan pengisihan di tempat, sila lihat kod berikut:

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

Apabila kami menggunakan pembolehubah baharu untuk menerima kandungan yang diisih, kami mendapati bahawa kami tidak mendapat Tiada. Tetapi **sorted()** adalah sebaliknya Ia akan menjana pembolehubah baharu untuk menyimpan senarai diisih Sila lihat kod berikut:

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]

Seperti yang anda lihat, kami menggunakan **sorted() **Apabila mengisih, storan pembolehubah baharu dijana dan diperoleh oleh kami.

Parameter biasa

Sudah tentu, parameter yang digunakan oleh kedua-dua fungsi pengisihan mempunyai banyak kandungan yang sama Mari kita lihat contoh berikut:

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']

Antaranya, **sorted() **Parameter fungsi adalah sama Berikut adalah nilai parameter yang biasa digunakan dan maknanya:

  • kunci: Parameter boleh menerima fungsi sebagai parameter. , yang akan digunakan pada senarai setiap elemen untuk diisih. Fungsi ini harus menerima satu parameter dan mengembalikan nilai yang akan digunakan untuk pengisihan.

  • terbalik: Parameter pilihan yang digunakan untuk mengawal susunan senarai diisih. Apabila terbalik adalah Benar, senarai diisih dalam tertib menurun; apabila terbalik adalah Salah atau tidak ditentukan (lalai adalah Salah), senarai diisih dalam tertib menaik.

Gunakan pemboleh ubah untuk memasukkan pembolehubah ke dalam urutan tersusun

Dapatkan kedudukan elemen yang disisipkan

bisect digunakan untuk memasukkan elemen ke dalam senarai yang diisih , dan Mengembalikan indeks ke dalam senarai selepas memasukkan elemen. Terdapat dua fungsi yang tersedia, iaitu bisect_left() dan bisect_right() Jelas sekali perbezaan utama ialah satu akan mengembalikan indeks sebelah kiri sisipan, dan satu lagi akan. kembalikan indeks sebelah kanan sisipan. Sila lihat contoh berikut:

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

Selain itu, dua fungsi di atas mempunyai dua parameter pilihan, seperti berikut:

  • Parameter lo mewakili julat carian Kedudukan permulaan boleh digunakan untuk menentukan carian dalam subjulat senarai.

  • Parameter hi mewakili kedudukan akhir julat carian dan boleh digunakan untuk menentukan carian dalam sub-julat senarai.

Kami boleh menggunakan parameter di atas untuk memilih sebahagian daripada selang untuk dimasukkan, sila lihat contoh berikut:

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

Dalam contoh ini, kami menentukan selang carian untuk sisipan, Dan mengembalikan kedudukan indeks yang dimasukkan.

Gunakan insort untuk memasukkan elemen ke dalam urutan tertib

Jika anda ingin memasukkan elemen ke dalam senarai tanpa memusnahkan susunan isihannya, anda boleh menggunakan fungsi **insort()**. Sila lihat contoh mudah berikut:

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]

Dalam contoh di atas, kami memasukkan pembolehubah tersuai ke dalam tatasusunan tertib.

Contoh aplikasi

Andaikan kita ingin menilai hasil input sebenarnya, kita boleh menulisnya menggunakan kaedah yang diperkenalkan di atas. Sila lihat contoh berikut:

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']

Lulus Dengan betul menggunakan fungsi di atas untuk memasukkan jujukan, kami melengkapkan fungsi penilaian prestasi dan mengembalikan penilaian yang sepadan dengan markah yang berbeza.

Atas ialah kandungan terperinci Bagaimana untuk memasukkan pembolehubah ke dalam tatasusunan yang diisih menggunakan Python dengan cara yang pantas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam