Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Ví dụ Comprehension trong Python


Với comprehension (hiểu nén), bạn có thể xây dựng các chuỗi trình tự (sequences) trong Python. Trong bài này, ta sẽ thấy cách tạo và truy cập các trình tự đó.

Dưới đây là các loại comprehension trong Python:

  • List Comprehension (Danh sách hiểu nén)
  • Dictionary Comprehension (Từ điển hiểu nén)
  • Set Comprehension (Tập hợp hiểu nén)
  • Generator Comprehension (Tạo sinh hiểu nén)

List Comprehension

Có nhiều cách tạo list và truy cập phần tử.

Dùng vòng lặp for

Ví dụ

# Tạo danh sách rỗng
listA = []
# Thêm phần tử vào danh sách
for n in range(4, 9):
    listA.append(n ** 3)
print("List dùng for loop:\n", listA)

Kết quả

Chạy mã trên cho kết quả sau:

List dùng for loop: [64, 125, 216, 343, 512]

Từ danh sách khác

Ta cũng có thể tạo list từ list khác bằng cách gán trực tiếp phần tử cho list mới.

Ví dụ

# Lấy một list
listA = [12, 9, 32, 45]
# Danh sách cho trước
print("Danh sách cho trước:\n ", listA)
new_list = [n for n in listA if n % 3 == 0]
print("Danh sách mới:\n", new_list)

Kết quả

Chạy mã trên cho kết quả sau:

Danh sách cho trước: [12, 9, 32, 45]
Danh sách mới: [12, 9, 45]

Dictionary Comprehension

Dictionary chứa các phần tử dạng cặp key-value. Ta sẽ thấy cách tạo các dictionary này.

Dùng for loop và zip

Ta lấy hai list chứa key và value. Sau đó nối chúng qua comprehension để tạo dictionary mới.

Ví dụ

Day = ['Mon', 'Tue', 'Wed']
Time = ['2pm', '10am', '11am']
# Tạo dict rỗng
dictA = {}
# Dùng for loop
for (key, value) in zip(Day, Time):
    dictA[key] = value
print("Dictionary dùng for loop:\n", dictA)

Kết quả

Chạy mã trên cho kết quả sau:

Dictionary dùng for loop: {'Mon': '2pm', 'Tue': '10am', 'Wed': '11am'}

Dùng key là chỉ số

Trong trường hợp này, ta lấy một list Python và dùng phần tử làm key cho dictionary. Cũng dẫn xuất giá trị cho mỗi key bằng biểu thức.

Ví dụ

listA = [3, 5, 4, 8, 9, 2]
dictA = {}
# Dùng for loop
for key in listA:
    if key % 2 != 0:
        dictA[key] = key ** 3
print("Dictionary dùng for loop:\n", dictA)

Kết quả

Chạy mã trên cho kết quả sau:

Dictionary dùng for loop: {3: 27, 5: 125, 9: 729}

Set Comprehension

Python Set chứa các phần tử duy nhất. Có thể tạo tương tự như list.

Với for loop

Ở đây ta lấy một list và áp dụng điều kiện để lấy một số phần tử. Sau đó cho các phần tử đó vào một set rỗng dùng phương thức add.

Ví dụ

listA = [12, 4, 25, 12, 4, 9]
setA = set()
# Dùng for loop
for x in listA:
    if x % 3 == 0:
        setA.add(x)
print("Set dùng for loop:", setA)

Kết quả

Chạy mã trên cho kết quả sau:

Set dùng for loop: {9, 12}

Với for và in

Trong phương pháp này, ta trực tiếp dùng vòng lặp for trong {}. Gán kết quả vào một set. Bên trong vòng lặp, ta dùng phần tử từ một list.

Ví dụ

listA = [12, 4, 25, 12, 4, 9]
# Dùng for loop
setA = {x for x in listA if x % 2 == 0}
print("Set dùng for loop:", setA)

Kết quả

Chạy mã trên cho kết quả sau:

Set dùng for loop: {12, 4}

Generator Comprehension

Trong cách này, ta lấy phần tử từ list, áp dụng điều kiện, rồi cho vào vòng lặp for. Kết quả gán cho trình tự. Phương pháp này gọi là generator comprehension.

Ví dụ

listA = [12, 4, 25, 12, 4, 9]
genrtr = (var for var in listA if var % 2 == 0)
print("Giá trị dùng generator comprehension:\n")
for x in genrtr:
    print(x, end=',')

Kết quả

Chạy mã trên cho kết quả sau:

Giá trị dùng generator comprehension: 12,4,12,4,