浅谈Python中的排序
浅谈排序
程序中经常用到排序函数,Python 提供了 sort 和 sorted 函数,一个原地排序,一个返回排序后的新结果
1、参数
函数原型:
sort([cmp[, key[, reverse]]])
意思是sort方法接受三个参数,都可以省略,默认是升序排序。
第一个参数cmp 是 比较函数,两个参数(列表的元素)怎样比较,对于整数这种内置类型的比较,方法很直观,但是对于自定义类型的比较,就要自己定义比较函数了,函数返回 0 ,就是两个数相等,返回负数,就是第一个参数小,第一个参数就排在第二个参数后面了。
第二个参数 key 是比较列表元素的什么属性。
第三个参数reverse是bool型,意思是是否反转(倒序排序)
①、cmp参数示例:
#cmp 函数,两个数倒过来比较 注!只能在python2.0上运行 s = [1, 2, 3, 4, 5] s.sort(cmp=lambda a, b:cmp(b, a)) print s # [5, 4, 3, 2, 1]
②、常用参数key,reverse使用方法,代码:
# key 指定排序方式 reverse 是否反排序 li = ['x11','abc323','e26','112ddd','fstgd2'] li.sort(key=len,reverse=True) # 用长度进行排序,从大到小进行排序 print(li) # ['abc323', '112ddd', 'fstgd2', 'x11', 'e26'] li.sort(key=lambda x:x[-1]) # key可以指定lambada函数x为列表中每个元素 print(li) # 元素的最后一个字符进行排序 # ['x11', 'fstgd2', 'abc323', 'e26', '112ddd'] li = zip(range(10),range(10)[::-1]) # 列表中元素为元祖是排序 print(li,type(li)) # <zip object at 0x000000E7F75504C8> <class 'zip'> li = list(li) print(li) # [(0, 9), (1, 8), (2, 7), (3, 6), (4, 5), (5, 4), (6, 3), (7, 2), (8, 1), (9, 0)] li.sort(key=lambda x:x[-1]) print(li) # [(9, 0), (8, 1), (7, 2), (6, 3), (5, 4), (4, 5), (3, 6), (2, 7), (1, 8), (0, 9)] #**注!默认sort也是会对列表中元祖进行排序的 li.sort() print(li) # (0, 9), (1, 8), (2, 7), (3, 6), (4, 5), (5, 4), (6, 3), (7, 2), (8, 1), (9, 0)]
参数key可以是:key=int,key=len, key=lambda...
2、排序
①、如何按照 value 从小到大输出 dict 中的 key-value值?
dic = {'z':1, 'y':4,'x':2,'g':3,'sg':3} dic= sorted(dic.items(),key=lambda x:x[1]) print(dic) # [('z', 1), ('x', 2), ('sg', 3), ('g', 3), ('y', 4)]
排序后转换为字典:
from collections import OrderedDict dic = {'z':1, 'y':4,'x':2,'g':3,'sg':3} dic= OrderedDict(sorted(dic.items(),key=lambda x:x[1])) print dic # OrderedDict([('z', 1), ('x', 2), ('sg', 3), ('g', 3), ('y', 4)]) for k,v in dic.items(): print k,v # z 1 # x 2 # sg 3 # g 3 # y 4
②、给定一个只包含大小写字母,数字的字符串,对其进行排序,保证:
所有的小写字母在大写字母前面
所有的字母在数字前面
所有的奇数在偶数前面
s = "Sorting1234" def sort_str(x): # x 传入的每个元素 if x.isdigit(): if int(x) % 2 == 0: return (4,x) # 返回的是元祖,元祖可进行排序 return (3,x) elif x.islower(): return (0,x) elif x.isupper(): return (1,x) li = sorted(s,key=sort_str) print(li) # ['g', 'i', 'n', 'o', 'r', 't', 'S', '1', '3', '2', '4'] string = ''.join(li) print(string) # ginortS1324
更简洁的代码:
s = "Sorting1234" s ="".join(sorted(s, key=lambda x: (x.isdigit(), x.isdigit() and int(x) % 2 == 0, x.isupper(), x.islower(), x))) print(s) # ginortS1324
Atas ialah kandungan terperinci 浅谈Python中的排序. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Docker menggunakan ciri -ciri kernel Linux untuk menyediakan persekitaran berjalan yang cekap dan terpencil. Prinsip kerjanya adalah seperti berikut: 1. Cermin digunakan sebagai templat baca sahaja, yang mengandungi semua yang anda perlukan untuk menjalankan aplikasi; 2. Sistem Fail Kesatuan (Unionfs) menyusun pelbagai sistem fail, hanya menyimpan perbezaan, menjimatkan ruang dan mempercepatkan; 3. Daemon menguruskan cermin dan bekas, dan pelanggan menggunakannya untuk interaksi; 4. Ruang nama dan cgroups melaksanakan pengasingan kontena dan batasan sumber; 5. Pelbagai mod rangkaian menyokong interkoneksi kontena. Hanya dengan memahami konsep -konsep teras ini, anda boleh menggunakan Docker dengan lebih baik.

Dalam kod VS, anda boleh menjalankan program di terminal melalui langkah -langkah berikut: Sediakan kod dan buka terminal bersepadu untuk memastikan bahawa direktori kod selaras dengan direktori kerja terminal. Pilih arahan Run mengikut bahasa pengaturcaraan (seperti python python your_file_name.py) untuk memeriksa sama ada ia berjalan dengan jayanya dan menyelesaikan kesilapan. Gunakan debugger untuk meningkatkan kecekapan debug.

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.

Sambungan kod VS menimbulkan risiko yang berniat jahat, seperti menyembunyikan kod jahat, mengeksploitasi kelemahan, dan melancap sebagai sambungan yang sah. Kaedah untuk mengenal pasti sambungan yang berniat jahat termasuk: memeriksa penerbit, membaca komen, memeriksa kod, dan memasang dengan berhati -hati. Langkah -langkah keselamatan juga termasuk: kesedaran keselamatan, tabiat yang baik, kemas kini tetap dan perisian antivirus.

CentOS Memasang Nginx memerlukan mengikuti langkah-langkah berikut: memasang kebergantungan seperti alat pembangunan, pcre-devel, dan openssl-devel. Muat turun Pakej Kod Sumber Nginx, unzip dan menyusun dan memasangnya, dan tentukan laluan pemasangan sebagai/usr/local/nginx. Buat pengguna Nginx dan kumpulan pengguna dan tetapkan kebenaran. Ubah suai fail konfigurasi nginx.conf, dan konfigurasikan port pendengaran dan nama domain/alamat IP. Mulakan perkhidmatan Nginx. Kesalahan biasa perlu diberi perhatian, seperti isu ketergantungan, konflik pelabuhan, dan kesilapan fail konfigurasi. Pengoptimuman prestasi perlu diselaraskan mengikut keadaan tertentu, seperti menghidupkan cache dan menyesuaikan bilangan proses pekerja.

VS Kod adalah nama penuh Visual Studio Code, yang merupakan editor kod dan persekitaran pembangunan yang dibangunkan oleh Microsoft. Ia menyokong pelbagai bahasa pengaturcaraan dan menyediakan penonjolan sintaks, penyiapan automatik kod, coretan kod dan arahan pintar untuk meningkatkan kecekapan pembangunan. Melalui ekosistem lanjutan yang kaya, pengguna boleh menambah sambungan kepada keperluan dan bahasa tertentu, seperti debuggers, alat pemformatan kod, dan integrasi Git. VS Kod juga termasuk debugger intuitif yang membantu dengan cepat mencari dan menyelesaikan pepijat dalam kod anda.
