Pemahaman Senarai Python (Dengan Contoh)

Dalam artikel ini, kita akan belajar mengenai pemahaman senarai Python, dan cara menggunakannya.

Senarai Pemahaman vs Untuk Gelung di Python

Katakanlah, kami ingin memisahkan huruf-huruf kata humandan menambahkan huruf sebagai item dalam senarai. Perkara pertama yang terlintas dalam fikiran adalah menggunakan loop.

Contoh 1: Memanaskan melalui rentetan Menggunakan untuk Gelung

 h_letters = () for letter in 'human': h_letters.append(letter) print(h_letters)

Semasa kita menjalankan program, outputnya adalah:

 ('h', 'u', 'm', 'a', 'n')

Namun, Python mempunyai cara yang lebih mudah untuk menyelesaikan masalah ini menggunakan List Comprehension. Pemahaman senarai adalah cara elegan untuk menentukan dan membuat senarai berdasarkan senarai yang ada.

Mari lihat bagaimana program di atas dapat ditulis menggunakan pemahaman senarai.

Contoh 2: Memulih melalui rentetan Menggunakan Pemahaman Senarai

 h_letters = ( letter for letter in 'human' ) print( h_letters)

Semasa kita menjalankan program, outputnya adalah:

 ('h', 'u', 'm', 'a', 'n')

Dalam contoh di atas, senarai baru ditugaskan untuk pemboleh ubah h_letters, dan senarai mengandungi item rentetan 'manusia' yang boleh diulang. Kami memanggil print()fungsi untuk menerima output.

Sintaksis Pemahaman Senarai

 (ungkapan untuk item dalam senarai)

Kita sekarang dapat mengenal pasti kegunaan pemahaman senarai.

Sekiranya anda perhatikan, humanadalah rentetan, bukan senarai. Ini adalah kekuatan pemahaman senarai. Ia dapat mengenal pasti kapan ia menerima tali atau tuple dan mengusahakannya seperti senarai.

Anda boleh melakukannya menggunakan gelung. Namun, tidak setiap gelung dapat ditulis semula sebagai pemahaman senarai. Tetapi semasa anda belajar dan merasa selesa dengan pemahaman senarai, anda akan mendapati diri anda semakin banyak gelung dengan sintaks elegan ini.

Senaraikan Fungsi vs fungsi Lambda

Pemahaman senarai bukanlah satu-satunya cara untuk bekerja pada senarai. Pelbagai fungsi bawaan dan fungsi lambda dapat membuat dan mengubah senarai dalam kod yang kurang.

Contoh 3: Menggunakan fungsi Lambda di dalam Senarai

 letters = list(map(lambda x: x, 'human')) print(letters)

Semasa kita menjalankan program, output akan menjadi

 ('h', 'u', 'm', 'a', 'n')

Walau bagaimanapun, pemahaman senarai biasanya lebih mudah dibaca manusia daripada fungsi lambda. Lebih mudah untuk memahami apa yang ingin dicapai oleh pengaturcara ketika pemahaman daftar digunakan.

Syarat dalam Pemahaman Senarai

Pemahaman senarai dapat menggunakan pernyataan bersyarat untuk mengubah senarai yang ada (atau tupel lain). Kami akan membuat senarai yang menggunakan operator matematik, nombor bulat, dan julat ().

Contoh 4: Menggunakan jika dengan Pemahaman Senarai

 number_list = ( x for x in range(20) if x % 2 == 0) print(number_list)

Apabila kita menjalankan program di atas, outputnya adalah:

 (0, 2, 4, 6, 8, 10, 12, 14, 16, 18)

Senarai, number_list, akan diisi oleh item dalam lingkungan 0-19 jika nilai item dapat dibahagikan dengan 2.

Contoh 5: Bersarang IF dengan Pemahaman Senarai

 num_list = (y for y in range(100) if y % 2 == 0 if y % 5 == 0) print(num_list)

Apabila kita menjalankan program di atas, outputnya adalah:

 (0, 10, 20, 30, 40, 50, 60, 70, 80, 90)

Di sini, senaraikan pemeriksaan pemahaman:

  1. Adakah y dibahagi dengan 2 atau tidak?
  2. Adakah y dibahagi dengan 5 atau tidak?

Sekiranya y memenuhi kedua-dua syarat tersebut, y ditambahkan ke senarai num_.

Contoh 6: jika… lain dengan Pemahaman Senarai

 obj = ("Even" if i%2==0 else "Odd" for i in range(10)) print(obj)

Apabila kita menjalankan program di atas, outputnya adalah:

 ('Genap', 'ganjil', 'genap', 'ganjil', 'genap', 'ganjil', 'genap', 'ganjil', 'genap', 'ganjil')

Here, list comprehension will check the 10 numbers from 0 to 9. If i is divisible by 2, then Even is appended to the obj list. If not, Odd is appended.

Nested Loops in List Comprehension

Suppose, we need to compute the transpose of a matrix that requires nested for loop. Let’s see how it is done using normal for loop first.

Example 7: Transpose of Matrix using Nested Loops

 transposed = () matrix = ((1, 2, 3, 4), (4, 5, 6, 8)) for i in range(len(matrix(0))): transposed_row = () for row in matrix: transposed_row.append(row(i)) transposed.append(transposed_row) print(transposed)

Output

 ((1, 4), (2, 5), (3, 6), (4, 8)) 

The above code use two for loops to find transpose of the matrix.

We can also perform nested iteration inside a list comprehension. In this section, we will find transpose of a matrix using nested loop inside list comprehension.

Example 8: Transpose of a Matrix using List Comprehension

 matrix = ((1, 2), (3,4), (5,6), (7,8)) transpose = ((row(i) for row in matrix) for i in range(2)) print (transpose)

When we run the above program, the output will be:

 ((1, 3, 5, 7), (2, 4, 6, 8))

In above program, we have a variable matrix which have 4 rows and 2 columns.We need to find transpose of the matrix. For that, we used list comprehension.

**Note: The nested loops in list comprehension don’t work like normal nested loops. In the above program, for i in range(2) is executed before row(i) for row in matrix. Hence at first, a value is assigned to i then item directed by row(i) is appended in the transpose variable.

Key Points to Remember

  • List comprehension is an elegant way to define and create lists based on existing lists.
  • List comprehension is generally more compact and faster than normal functions and loops for creating list.
  • However, we should avoid writing very long list comprehensions in one line to ensure that code is user-friendly.
  • Ingat, setiap pemahaman daftar dapat ditulis ulang untuk gelung, tetapi setiap pemahaman gelung tidak dapat ditulis ulang dalam bentuk pemahaman daftar.

Artikel menarik...