Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách dùng list comprehension trong Python
Trong bài này chúng ta sẽ tìm hiểu cách sử dụng list comprehension trong Python, đây là cách tạo ra một list mới dựa vào một list có sẵn dựa vào một điều kiện nào đó.
1. List comprehension là gì?
List comprehension là cách tạo ra một list dữ liệu mới dựa vào dữ liệu cũ theo một điều kiện nào đó.
Vậy, công thức chung của list comprehension là:
newlist = [expression for item in iterable if condition == True]
Trong đó:
Bài viết này được đăng tại [free tuts .net]
expression
chính là biểu thức trả vềiterable
là tập dữ liệu iteratorcondition
là điều kiện trả về, phần tử nào cócondition = True
thì biểu thức expression tương ứng sẽ được trả về.
Giả sử mình có một mảng các số như sau:
numbers = [1,3,86,4,54,54,45,65,6,57,67,87,82]
Bây giờ mình muốn tạo một mảng mới từ mảng này, với điều kiện là chỉ lấy các số chẵn mà thôi.
Cách thứ nhất: Sử dụng vòng lặp bình thường.
numbers = [1,3,86,4,54,54,45,65,6,57,67,87,82] new_numbers = [] for n in numbers: if n % 2 == 0: new_numbers.append(n) # kết quả: [86, 4, 54, 54, 6, 82] print(new_numbers)
Cách thứ hai: Sử dụng list comprehension.
numbers = [1,3,86,4,54,54,45,65,6,57,67,87,82] new_numbers = [x for x in numbers if x % 2 == 0] # kết quả: [86, 4, 54, 54, 6, 82] print(new_numbers)
Bạn có thể không cần phải truyền condition.
Ví dụ: Tạo mảng mới với giá trị gấp đôi mảng cũ.
numbers = [1,3,5,7,9] new_numbers = [x*2 for x in numbers] # Kết quả: [2, 6, 10, 14, 18] print(new_numbers)
2. Ví dụ về list comprehension trong Python
Bây giờ mình sẽ làm thêm một vài ví dụ để bạn dễ hiểu hơn nhé.
Ví dụ: Tạo danh sách các số nguyên tố từ một danh sách có sẵn.
Để giải bài này thì ta cần tạo một hàm kiểm tra số nguyên tố trước, sau đó sẽ sử dụng nó trong phần condition.
# Hàm kiểm tra số nguyên tố def laSNT(n): if n < 2: return False elif n == 2: return True elif n % 2 == 0: return False else: for i in range(3, n, 2): if n % i == 0: return False return True # Dữ liệu data = [1, 2, 3, 5, 45, 46, 5, 6, 76, 9, 11] # Lấy danh sách các số nguyên tố trong data data_snt = [x for x in data if laSNT(x)] print(data_snt)
Đây chính là cách sử dụng list comprehension để tạo ra danh sách mảng mới trong Python.