Sunday, January 19, 2025

[Python] Lesson 56 – List comprehensions

-

List comprehensions là một tính năng trong Python cho phép tạo ra một danh sách mới dựa trên một danh sách đã có mà không cần phải sử dụng vòng lặp for và các điều kiện if. Tính năng này cho phép người lập trình Python tạo ra các danh sách mới một cách nhanh chóng và dễ dàng hơn bằng cách sử dụng một biểu thức duy nhất.

Cú pháp của list comprehension như sau:

new_list = [expression for item in iterable if condition]

Trong đó:

  • new_list là danh sách mới được tạo ra.
  • expression là biểu thức được áp dụng cho mỗi phần tử của danh sách.
  • item là từng phần tử của danh sách ban đầu.
  • iterable là danh sách ban đầu.
  • condition là điều kiện để lọc các phần tử của danh sách.

Ví dụ 1:

# Tạo một danh sách các số chẵn từ 0 đến 10
even_numbers = [num for num in range(11) if num % 2 == 0]
print(even_numbers)  # output: [0, 2, 4, 6, 8, 10]

# Tạo một danh sách các ký tự in hoa từ một danh sách ký tự
char_list = ['a', 'b', 'C', 'D', 'e', 'F']
upper_chars = [char.upper() for char in char_list if char.islower()]
print(upper_chars)  # output: ['A', 'B', 'E']

Code trên sử dụng list comprehensions trong Python để tạo ra các danh sách mới dựa trên các điều kiện được chỉ định.

Ở ví dụ đầu tiên, danh sách even_numbers chứa các số chẵn từ 0 đến 10, được tạo ra bằng cách sử dụng một list comprehension. Mỗi phần tử trong danh sách được tạo ra bởi biểu thức “num” trong “for num in range(11)”, và chỉ những phần tử có giá trị “num % 2 == 0” (chia hết cho 2) sẽ được bao gồm trong danh sách.

Ở ví dụ thứ hai, danh sách upper_chars chứa các ký tự in hoa từ danh sách ký tự char_list. Tương tự như ví dụ trước, list comprehension sử dụng biểu thức “char” trong “for char in char_list” để tạo ra các phần tử mới. Chỉ những phần tử có giá trị “char.islower()” (là chữ thường) sẽ được bao gồm trong danh sách. Sau đó, mỗi phần tử đó được chuyển thành ký tự in hoa bằng cách sử dụng phương thức “char.upper()”.

Ví dụ 2:

# Tạo list mới từ list có sẵn
numbers = [1, 2, 3, 4, 5]
squares = [num**2 for num in numbers]
print(squares)  # output: [1, 4, 9, 16, 25]

# Tạo list mới từ list có sẵn và áp dụng điều kiện lọc
numbers = [1, 2, 3, 4, 5]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers)  # output: [2, 4]

Trong ví dụ đầu tiên, chúng ta tạo một list mới gọi là squares bằng cách áp dụng biểu thức num**2 cho từng phần tử num trong list numbers. Kết quả là một list mới chứa bình phương của từng phần tử trong list numbers.

Trong ví dụ thứ hai, chúng ta tạo một list mới gọi là even_numbers bằng cách lặp lại từng phần tử num trong list numbers và chỉ thêm phần tử đó vào list mới nếu nó chia hết cho 2. Kết quả là một list mới chỉ chứa các số chẵn trong list numbers.

Ví dụ 3:

Trong quản trị hệ thống Linux, chúng ta thường sử dụng list comprehensions để xử lý danh sách các tập tin hoặc thư mục trong hệ thống file.

Ví dụ:

# Lấy danh sách các tập tin trong thư mục hiện tại với đuôi .txt
import os
file_list = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.txt')]
print(file_list)

Trong ví dụ này, chúng ta sử dụng module os để lấy danh sách các file trong thư mục hiện tại bằng cách sử dụng hàm listdir(). Sau đó, chúng ta sử dụng list comprehensions để lọc ra các file có đuôi là .txt bằng cách sử dụng điều kiện f.endswith('.txt').

Một ví dụ khác là sử dụng list comprehensions để tạo ra một danh sách các thư mục con trong một thư mục cụ thể:

# Lấy danh sách các thư mục con trong thư mục /usr/share/
import os
dir_list = [d for d in os.listdir('/usr/share/') if os.path.isdir('/usr/share/' + d)]
print(dir_list)

Ở đây, chúng ta sử dụng hàm listdir() để lấy danh sách các file và thư mục con trong thư mục /usr/share/. Sau đó, chúng ta sử dụng list comprehensions để lọc ra các thư mục con bằng cách sử dụng điều kiện os.path.isdir('/usr/share/' + d).

Những ví dụ này chỉ là một số ví dụ đơn giản về cách sử dụng list comprehensions trong quản trị hệ thống Linux. Trên thực tế, chúng ta có thể sử dụng list comprehensions để thực hiện nhiều tác vụ khác nhau trong quản trị hệ thống file.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories