Memahami Pemahaman Senarai dalam Python

WBOY
Lepaskan: 2024-07-16 16:18:00
asal
1130 orang telah melayarinya

Understanding List Comprehensions in Python

Pemahaman senarai ialah kaedah yang berkuasa dan cekap untuk mencipta senarai dalam Python.

Mereka menawarkan cara ringkas dan boleh dibaca untuk menjana senarai berdasarkan iterables sedia ada.

Dalam artikel, saya akan meneroka nuansa pemahaman senarai, faedahnya berbanding gelung tradisional dan pelbagai aplikasi praktikal.


Apakah Pemahaman Senarai?

Pemahaman senarai ialah cara padat dari segi sintaksis untuk membuat senarai dengan menggabungkan gelung dan logik bersyarat ke dalam satu baris kod.

Ini menghasilkan cara yang lebih mudah dibaca dan ekspresif untuk menjana senarai, menjadikannya lebih mudah untuk memahami maksud kod sepintas lalu.


Struktur dan Contoh

Struktur asas pemahaman senarai adalah seperti berikut:

[expression for item in iterable if condition]
Salin selepas log masuk

Mari kita pecahkan komponen struktur ini:

  • ungkapan: Ini ialah nilai yang akan ditambahkan pada senarai baharu untuk setiap lelaran.
  • untuk item dalam boleh iterable: Ini ialah binaan gelung yang melelar ke atas setiap item dalam boleh lelar (cth., senarai, tuple, set, kamus atau penjana).
  • sekiranya syarat: Ini ialah pernyataan bersyarat pilihan yang menapis item untuk disertakan dalam senarai baharu.

Contoh:

Kefahaman Senarai Asas:

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)  

# Output: [1, 4, 9, 16, 25]
Salin selepas log masuk

Contoh ini menggunakan pemahaman senarai untuk membuat senarai petak baharu daripada senarai nombor sedia ada.

Senaraikan Pemahaman dengan Syarat:

numbers = [1, 2, 3, 4, 5]
even_squares = [x**2 for x in numbers if x % 2 == 0]
print(even_squares)  

# Output: [4, 16]
Salin selepas log masuk

Contoh ini menapis nombor untuk memasukkan hanya nombor genap, yang kemudiannya diduakan, menunjukkan penggunaan keadaan if dalam pemahaman senarai.


Faedah Kefahaman Senarai Berbanding Gelung Tradisional

Kefahaman senarai menawarkan beberapa kelebihan berbanding gelung tradisional:

  • Ringkas: Pemahaman senarai lebih ringkas dan mudah dibaca berbanding gelung tradisional, menjadikan kod anda lebih mudah diselenggara dan lebih mudah difahami.
  • Prestasi: Pemahaman senarai selalunya lebih pantas daripada gelung tradisional kerana ia dioptimumkan untuk membuat senarai.
  • Kebolehbacaan: Tujuan pemahaman senarai adalah lebih jelas daripada gelung tradisional, menjadikannya lebih mudah bagi orang lain untuk memahami kod anda.

Aplikasi Praktikal

Kefahaman senarai boleh digunakan dalam pelbagai cara untuk memanipulasi dan memproses data.

Berikut ialah beberapa kes penggunaan biasa:
Senarai Penapisan:

words = ["apple", "banana", "cherry", "date"]
short_words = [word for word in words if len(word) <= 5]
print(short_words)  

# Output: ['apple', 'date']
Salin selepas log masuk

Contoh ini menapis senarai perkataan untuk memasukkan hanya perkataan yang mempunyai 5 aksara atau kurang.

Senarai Mengubah:

temperatures_celsius = [0, 20, 30, 40]
temperatures_fahrenheit = [(temp * 9/5) + 32 for temp in temperatures_celsius]
print(temperatures_fahrenheit)  

# Output: [32.0, 68.0, 86.0, 104.0]
Salin selepas log masuk

Contoh ini menukar senarai suhu daripada Celsius kepada Fahrenheit.

Pemahaman Senarai Bersarang:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened)  

# Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Salin selepas log masuk

Contoh ini meratakan senarai 2D (matriks) menjadi senarai 1D menggunakan pemahaman senarai bersarang.

Membuat Senarai Tuple:

pairs = [(x, y) for x in range(3) for y in range(3)]
print(pairs) 

# Output: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
Salin selepas log masuk

Contoh ini menjana senarai semua kemungkinan pasangan (tuple) nombor daripada dua julat.

Mengalih Keluar Pendua:

list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set([x for x in list_with_duplicates]))
print(unique_list)  

# Output: [1, 2, 3, 4, 5]
Salin selepas log masuk

Contoh ini mengalih keluar pendua daripada senarai dengan menukarnya kepada set dan kembali kepada senarai.


Topik Lebih Lanjutan

Mari kita terokai beberapa topik yang lebih lanjut mengenai variasi pemahaman senarai.

Ungkapan Penjana
Ungkapan penjana adalah serupa dengan pemahaman senarai tetapi menjana lelaran dan bukannya senarai.

Ini boleh menjadi lebih cekap memori apabila bekerja dengan set data yang besar, kerana item dijana dengan cepat dan bukannya disimpan dalam ingatan sekaligus.

numbers = [1, 2, 3, 4, 5]
squares_generator = (x**2 for x in numbers)

for square in squares_generator:
    print(square)

# Output
# 1
# 4
# 9
# 16
# 25
Salin selepas log masuk

Kamus dan Set Pemahaman
Python juga menyokong kamus dan set kefahaman, yang membolehkan anda mencipta kamus dan set dengan cara yang ringkas, sama seperti senarai kefahaman.

# Dictionary comprehension
numbers = [1, 2, 3, 4, 5]
squares_dict = {x: x**2 for x in numbers}
print(squares_dict)  

# Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}



# Set comprehension
list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_set = {x for x in list_with_duplicates}
print(unique_set)  

# Output: {1, 2, 3, 4, 5}

Salin selepas log masuk

Kesimpulan

Pemahaman senarai ialah alat yang berkuasa dan serba boleh dalam Python yang membolehkan anda membuat senarai dengan cara yang ringkas dan boleh dibaca.

Mereka boleh memudahkan kod anda, meningkatkan prestasi dan memudahkan untuk memanipulasi dan memproses data.

Dengan menguasai pemahaman senarai dan ciri lanjutannya, anda boleh menulis kod Python yang lebih cekap dan lebih bersih.

Atas ialah kandungan terperinci Memahami Pemahaman Senarai dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!