Pemahaman Daftar Python (Dengan Contoh)

Pada artikel ini, kita akan belajar tentang pemahaman daftar Python, dan cara menggunakannya.

Pemahaman Daftar vs Untuk Loop dengan Python

Misalkan, kita ingin memisahkan huruf dari kata humandan menambahkan huruf sebagai item dari daftar. Hal pertama yang terlintas dalam pikiran akan menggunakan for loop.

Contoh 1: Iterasi melalui string Using for Loop

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

Saat kita menjalankan program, outputnya adalah:

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

Namun, Python memiliki cara yang lebih mudah untuk menyelesaikan masalah ini menggunakan Pemahaman Daftar. Pemahaman daftar adalah cara yang elegan untuk menentukan dan membuat daftar berdasarkan daftar yang ada.

Mari kita lihat bagaimana program di atas dapat ditulis menggunakan pemahaman daftar.

Contoh 2: Iterasi melalui string Menggunakan Pemahaman Daftar

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

Saat kita menjalankan program, outputnya adalah:

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

Dalam contoh di atas, daftar baru diberikan ke variabel h_letters, dan daftar berisi item dari string berulang 'manusia'. Kami memanggil print()fungsi untuk menerima output.

Sintaks Pemahaman Daftar

 (ekspresi untuk item dalam daftar)

Kami sekarang dapat mengidentifikasi di mana pemahaman daftar digunakan.

Jika Anda perhatikan, itu humanadalah string, bukan daftar. Inilah kekuatan pemahaman daftar. Itu dapat mengidentifikasi ketika menerima string atau tupel dan mengerjakannya seperti daftar.

Anda dapat melakukannya dengan menggunakan loop. Namun, tidak setiap loop dapat ditulis ulang sebagai pemahaman daftar. Tetapi saat Anda belajar dan merasa nyaman dengan pemahaman daftar, Anda akan menemukan diri Anda mengganti lebih banyak loop dengan sintaks yang elegan ini.

Memahami daftar vs fungsi Lambda

Pemahaman daftar bukanlah satu-satunya cara untuk mengerjakan daftar. Berbagai fungsi bawaan dan fungsi lambda dapat membuat dan mengubah daftar dalam lebih sedikit baris kode.

Contoh 3: Menggunakan fungsi Lambda di dalam List

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

Saat kita menjalankan program, outputnya adalah

 ('manusia')

Namun, pemahaman daftar biasanya lebih dapat dibaca manusia daripada fungsi lambda. Lebih mudah untuk memahami apa yang pemrogram coba capai ketika pemahaman daftar digunakan.

Persyaratan dalam Pemahaman Daftar

Pemahaman daftar dapat menggunakan pernyataan bersyarat untuk mengubah daftar yang ada (atau tuple lain). Kami akan membuat daftar yang menggunakan operator matematika, integer, dan range ().

Contoh 4: Menggunakan if dengan Pemahaman Daftar

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

Saat kita menjalankan program di atas, outputnya adalah:

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

List, number_list, akan diisi oleh item dalam rentang 0-19 jika nilai item dapat dibagi 2.

Contoh 5: IF Bersarang dengan Pemahaman Daftar

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

Saat kita menjalankan program di atas, outputnya adalah:

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

Di sini, periksa pemahaman daftar:

  1. Apakah y habis dibagi 2 atau tidak?
  2. Apakah y habis dibagi 5 atau tidak?

Jika y memenuhi kedua kondisi tersebut, y ditambahkan ke num_list.

Contoh 6: if… else Dengan Pemahaman Daftar

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

Saat kita menjalankan program di atas, outputnya adalah:

 ('Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd')

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 dalam perulangan for, tetapi setiap perulangan for tidak dapat ditulis ulang dalam bentuk pemahaman daftar.

Artikel yang menarik...