Rumah > Artikel > pembangunan bahagian belakang > Kongsi 18 petua pengaturcaraan cekap Python
Artikel ini disusun oleh Python Programming Time
Kemahiran pengaturcaraan bahasa Python yang cekap membuatkan kita yang telah belajar c atau c++ selama empat tahun di kolej sangat teruja . Ia tidak berjaya, dan akhirnya saya bebas. Bahasa peringkat tinggi, jika tidak boleh melakukan ini, mengapa ia begitu maju?
>>>a=3 >>>b=6
Jika anda ingin menukar pembolehubah dalam c++, anda pasti memerlukan pembolehubah kosong. Tetapi python tidak memerlukannya, ia hanya memerlukan satu baris, semua orang boleh melihat dengan jelas
>>>a,b=b,a >>>print(a) >>>6 >>>ptint(b) >>>5
Kebanyakan pengaturcara Python tahu Dan telah menggunakan pemahaman senarai. Jika anda tidak biasa dengan konsep pemahaman senarai - pemahaman senarai ialah cara yang lebih pendek dan ringkas untuk mencipta senarai.
>>> some_list = [1, 2, 3, 4, 5] >>> another_list = [ x + 1 for x in some_list ] >>> another_list [2, 3, 4, 5, 6]
Sejak Python 3.1, kami boleh menggunakan sintaks yang sama untuk mencipta set dan senarai kamus:
>>> # Set Comprehensions >>> some_list = [1, 2, 3, 4, 5, 2, 5, 1, 4, 8] >>> even_set = { x for x in some_list if x % 2 == 0 } >>> even_set set([8, 2, 4]) >>> # Dict Comprehensions >>> d = { x: x % 2 == 0 for x in range(1, 11) } >>> d {1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False, 10: True}
Dalam contoh pertama, kami menggunakan some_list sebagai asas untuk mencipta set A dengan elemen unik, dan set hanya mengandungi nombor genap. Dalam contoh jadual kamus, kami mencipta kunci yang merupakan integer tidak berulang antara 1 dan 10 dan nilainya ialah jenis Boolean yang menunjukkan sama ada kunci itu ialah nombor genap.
Perkara lain yang perlu diberi perhatian di sini ialah perwakilan literal bagi set. Kita hanya boleh membuat set dengan cara ini:
>>> my_set = {1, 2, 1, 2, 3, 4} >>> my_set set([1, 2, 3, 4])
tanpa menggunakan set fungsi terbina dalam().
Ini kelihatan jelas, tetapi sering dilupakan. Mengira sesuatu adalah tugas biasa bagi kebanyakan pengaturcara, dan dalam kebanyakan kes tidak begitu mencabar - berikut ialah beberapa cara untuk menjadikannya lebih mudah.
Pustaka kelas koleksi Python mempunyai subkelas terbina dalam kelas dict, yang direka khas untuk melakukan perkara seperti ini:
>>> from collections import Counter >>> c = Counter('hello world') >>> c Counter({'l': 3, 'o': 2, ' ': 1, 'e': 1, 'd': 1, 'h': 1, 'r': 1, 'w': 1}) >>> c.most_common(2) [('l', 3), ('o', 2)]
JSON ialah bentuk siri data yang sangat baik dan digunakan secara meluas oleh pelbagai API dan perkhidmatan web hari ini. Menggunakan pemprosesan json terbina dalam Python boleh membuat rentetan JSON boleh dibaca pada tahap tertentu, tetapi apabila menemui data yang besar, ia kelihatan sebagai garis yang panjang dan berterusan, yang sukar dilihat oleh mata manusia.
Untuk menjadikan data JSON lebih mesra pengguna, kami boleh menggunakan parameter inden untuk mengeluarkan JSON yang cantik. Ini amat berguna apabila pengaturcaraan atau pengelogan secara interaktif dalam konsol:
>>> import json >>> print(json.dumps(data))# No indention {"status": "OK", "count": 2, "results": [{"age": 27, "name": "Oz", "lactose_intolerant": true}, {"age": 29, "name": "Joe", "lactose_intolerant": false}]} >>> print(json.dumps(data, indent=2))# With indention { "status": "OK", "count": 2, "results": [ { "age": 27, "name": "Oz", "lactose_intolerant": true }, { "age": 29, "name": "Joe", "lactose_intolerant": false } ] }
Begitu juga, menggunakan modul pprint terbina dalam boleh membuat apa-apa perkara lain dicetak dengan lebih cantik.
Beberapa masa lalu Jeff Atwood mempromosikan latihan pengaturcaraan mudah yang dipanggil FizzBuzz Masalahnya dipetik seperti berikut:
Tulis program untuk mencetak nombor 1 hingga. 100, 3 Cetak "Fizz" untuk menggantikan nombor, "Buzz" untuk gandaan 5 dan "FizzBuzz" untuk nombor yang kedua-duanya adalah gandaan 3 dan 5.
Berikut ialah cara ringkas dan menarik untuk menyelesaikan masalah ini:
for x in range(1,101): print"fizz"[x%3*len('fizz')::]+"buzz"[x%5*len('buzz')::] or x
print "Hello" if True else "World" >>> Hello
The cara terakhir di bawah adalah sejuk apabila mengikat dua objek berbeza jenis.
nfc = ["Packers", "49ers"] afc = ["Ravens", "Patriots"] print nfc + afc >>> ['Packers', '49ers', 'Ravens', 'Patriots'] print str(1) + " world" >>> 1 world print `1` + " world" >>> 1 world print 1, "world" >>> 1 world print nfc, 1 >>> ['Packers', '49ers'] 1
Ini adalah kaedah yang hebat dan mudah yang saya lihat dalam banyak bahasa
x = 2 if 3 > x > 1: print x >>> 2 if 1 < x > 0: print x >>> 2
nfc = ["Packers", "49ers"] afc = ["Ravens", "Patriots"] for teama, teamb in zip(nfc, afc): print teama + " vs. " + teamb >>> Packers vs. Ravens >>> 49ers vs. Patriots
teams = ["Packers", "49ers", "Ravens", "Patriots"] for index, team in enumerate(teams): print index, team >>> 0 Packers >>> 1 49ers >>> 2 Ravens >>> 3 Patriots
Memandangkan senarai, kita boleh memilih kaedah senarai genap:
numbers = [1,2,3,4,5,6] even = [] for number in numbers: if number%2 == 0: even.append(number)
diubah menjadi seperti berikut:
numbers = [1,2,3,4,5,6] even = [number for number in numbers if number%2 == 0]
Sama seperti pemahaman senarai, kamus boleh melakukan kerja yang sama:
teams = ["Packers", "49ers", "Ravens", "Patriots"] print {key: value for value, key in enumerate(teams)} >>> {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0}
items = [0]*3 print items >>> [0,0,0]
teams = ["Packers", "49ers", "Ravens", "Patriots"] print ", ".join(teams) >>> 'Packers, 49ers, Ravens, Patriots'
Saya mengakui bahawa kod cuba/kecuali is not elegant , tetapi inilah kaedah yang mudah, cuba cari kunci dalam kamus, jika alue yang sepadan tidak dijumpai, parameter kedua akan digunakan untuk menetapkan nilai pembolehubahnya.
data = {'user': 1, 'name': 'Max', 'three': 4} try: is_admin = data['admin'] except KeyError: is_admin = False
Ganti dengan ini
data = {'user': 1, 'name': 'Max', 'three': 4} is_admin = data.get('admin', False)
Kadangkala, anda hanya memerlukan beberapa elemen dalam senarai, berikut adalah beberapa sub- set mendapatkan kaedah set senarai.
x = [1,2,3,4,5,6] #前3个 print x[:3] >>> [1,2,3] #中间4个 print x[1:5] >>> [2,3,4,5] #最后3个 print x[3:] >>> [4,5,6] #奇数项 print x[::2] >>> [1,3,5] #偶数项 print x[1::2] >>> [2,4,6]
Selain jenis data terbina dalam python, modul pengumpulan juga termasuk beberapa kes penggunaan khas sangat praktikal dalam beberapa situasi. Jika anda menyertai Facebook HackerCup tahun ini, anda juga boleh mendapati praktikalnya.
from collections import Counter print Counter("hello") >>> Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})
Seperti perpustakaan koleksi, terdapat juga perpustakaan yang dipanggil itertools, yang boleh menyelesaikan masalah tertentu dengan cekap. Satu kes penggunaan adalah untuk mencari semua gabungan, yang boleh memberitahu anda semua gabungan unsur yang mustahil dalam kumpulan
from itertools import combinations teams = ["Packers", "49ers", "Ravens", "Patriots"] for game in combinations(teams, 2): print game >>> ('Packers', '49ers') >>> ('Packers', 'Ravens') >>> ('Packers', 'Patriots') >>> ('49ers', 'Ravens') >>> ('49ers', 'Patriots') >>> ('Ravens', 'Patriots')
Ini lebih praktikal daripada teknologi praktikal perkara yang sangat menarik. Dalam python, Benar dan Salah ialah pembolehubah global, jadi:
False = True if False: print "Hello" else: print "World" >>> Hello
Atas ialah kandungan terperinci Kongsi 18 petua pengaturcaraan cekap Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!