Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kongsi 18 petua pengaturcaraan cekap Python

Kongsi 18 petua pengaturcaraan cekap Python

WBOY
WBOYke hadapan
2023-04-16 15:25:031072semak imbas

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?

01 Tukar pembolehubah

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

02 pemahaman kamus dan Set pemahaman

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().

03 Gunakan Pembilang untuk mengira objek semasa mengira

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

04 Cetak JSON dengan cantik

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.

05 Menyelesaikan FizzBuzz

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

06 if statement in line

print "Hello" if True else "World"
>>> Hello

07 connection

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

08 Perbandingan berangka

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

09 Lelang dua senarai pada masa yang sama

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
for teama, teamb in zip(nfc, afc):
 print teama + " vs. " + teamb
>>> Packers vs. Ravens
>>> 49ers vs. Patriots

10 lelaran senarai terindeks

teams = ["Packers", "49ers", "Ravens", "Patriots"]
for index, team in enumerate(teams):
print index, team
>>> 0 Packers
>>> 1 49ers
>>> 2 Ravens
>>> 3 Patriots

11 Pemahaman senarai

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]

12 pemahaman kamus

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}

13 Mulakan nilai senarai

items = [0]*3
print items
>>> [0,0,0]

14 Tukar senarai kepada rentetan

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print ", ".join(teams)
>>> 'Packers, 49ers, Ravens, Patriots'

15 Dapatkan elemen daripada kamus

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)

16 Dapatkan subset senarai

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})

17 Alat Lelaran

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

18 Salah == Benar

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!

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