Khả năng hiểu danh sách trong Python là một cách tạo danh sách dựa trên danh sách hiện có. Phần hiểu danh sách thường được sử dụng để lọc các mục ra khỏi danh sách hoặc để thay đổi các giá trị trong danh sách hiện có. Phần hiểu danh sách được đặt trong dấu ngoặc vuông.
Khi bạn đang làm việc với các danh sách, bạn có thể muốn tạo một danh sách dựa trên nội dung của một chuỗi hiện có. Ví dụ:bạn có thể muốn tạo một danh sách dựa trên một chuỗi các ký tự. Hoặc bạn có thể muốn một danh sách nhân nội dung của một danh sách khác lên hai.
Đó là nơi xuất hiện các tính năng hiểu danh sách. Hướng dẫn này sẽ khám phá, với các ví dụ, kiến thức cơ bản về danh sách Python và cách sử dụng tính năng hiểu danh sách.
Danh sách Python:Trình làm mới
Cấu trúc dữ liệu danh sách cho phép bạn lưu trữ các bộ sưu tập các mục bằng Python. Danh sách thường được sử dụng khi bạn muốn làm việc với nhiều giá trị có liên quan theo một cách nào đó.
Ví dụ, bạn có thể sử dụng một danh sách để lưu trữ tất cả các hương vị của kem được bán trong một cửa hàng kem. Hoặc bạn có thể sử dụng danh sách để lưu trữ danh sách số điện thoại của các thành viên tại một câu lạc bộ rượu.
Dưới đây là ví dụ về danh sách bằng Python:
pizzas = ['Chicken', 'Margherita', 'Chicken and Bacon', 'Vegan Special', 'Spinach and Brie', 'BBQ Chicken']
Bây giờ chúng ta đã sửa đổi các khái niệm cơ bản về danh sách, chúng ta có thể bắt đầu nói về cách sử dụng khả năng hiểu danh sách.
Hiểu danh sách Python
Khả năng hiểu danh sách trong Python tạo ra một danh sách mới từ nội dung của một danh sách khác. Bạn có thể sử dụng khả năng hiểu danh sách để sao chép danh sách hoặc sửa đổi nội dung của danh sách hiện có thành danh sách mới. Hoặc bạn có thể chuyển nội dung của một tệp có thể lặp lại khác vào một danh sách với khả năng hiểu danh sách.
81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.
Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.
Bạn có thể chỉ định các bộ lọc để danh sách mới của bạn chỉ bao gồm các giá trị nhất định. Ví dụ:bạn có thể tạo một danh sách mới từ một danh sách các số. Danh sách mới của bạn có thể chỉ bao gồm các số lớn hơn 250.
Cú pháp để hiểu danh sách trong Python như sau:
[expression for item in list]
Cú pháp này tương tự như Python for tuyên bố. Nhưng, tuyên bố nằm trên một dòng. Để phân biệt giữa câu lệnh for, cách hiểu danh sách được đặt trong dấu ngoặc vuông.
Có ba phần trong cú pháp trên:
- biểu thức :Giá trị cuối cùng đi vào danh sách mới.
- mục :Từng mục trong danh sách mà bạn lặp lại.
- danh sách :Danh sách hoặc đối tượng có thể lặp lại mà thông qua đó khả năng hiểu danh sách (các loại dữ liệu được chấp nhận bao gồm bộ giá trị, chuỗi và danh sách).
Bạn có thể sử dụng khả năng hiểu danh sách với câu lệnh Python if… else bên trong:
[expression for item in list if condition else none]
Sự hiểu biết này chỉ thêm các mục vào danh sách nếu chúng đáp ứng điều kiện đã chỉ định.
Sử dụng tính năng hiểu danh sách cho phép bạn tạo danh sách mới từ danh sách hiện có mà không cần xác định đầy đủ cho các câu lệnh. cho các câu lệnh chiếm ít nhất hai dòng mã trong khi bạn có thể viết toàn bộ danh sách trên một dòng.
Một số người nói rằng khả năng hiểu danh sách là mã Pythonic nhiều hơn. Điều này là do chúng hiệu quả hơn so với việc sử dụng từ viết tắt for tuyên bố.
Ví dụ về hiểu danh sách Python
Giả sử chúng ta muốn lập danh sách tất cả các loại pizza gà mà chúng ta bán tại cửa hàng của mình. Chúng tôi sẽ chuyển tất cả pizza gà thành Chicken danh mục trên menu của chúng tôi. Để làm như vậy, chúng tôi có thể lọc bánh pizza của mình bằng cách sử dụng for các câu lệnh. Hoặc, chúng tôi có thể lọc danh sách của mình bằng cách sử dụng tính năng hiểu danh sách.
Chúng tôi có thể sử dụng tính năng hiểu danh sách để tạo danh sách pizza mới có tên chứa Gà dựa trên danh sách pizza hiện có của chúng tôi. Chúng tôi có thể làm như vậy bằng cách sử dụng mã này:
pizzas = ['Chicken', 'Margherita', 'Chicken and Bacon', 'Vegan Special', 'Spinach and Brie', 'BBQ Chicken'] chicken_pizzas = [p for p in pizzas if "Chicken" in p] print(chicken_pizzas)
Sự hiểu biết của chúng tôi trả về danh sách đầu ra sau:
[‘Chicken’, ‘Chicken and Bacon’, ‘BBQ Chicken’]
Trong mã của chúng tôi, trước tiên chúng tôi xác định danh sách các loại pizza trên thực đơn của chúng tôi. Pizza của chúng tôi được lưu trữ trong biến Python có tên là pizzas . Sau đó, chúng tôi sử dụng tính năng hiểu danh sách để tạo danh sách pizza mới có tên chứa Gà.
Phần hiểu danh sách của chúng tôi bao gồm các phần sau:
- p :Đây là giá trị được thêm vào danh sách của chúng tôi.
- đối với bánh pizza :Điều này lặp lại qua mọi chiếc bánh pizza trong danh sách “pizza” của chúng tôi.
- nếu “Gà” bằng p :Điều này sẽ kiểm tra xem mỗi chiếc bánh pizza có chứa “Gà” hay không. Nếu giá trị này là True, giá trị được lưu trữ trong “p” sẽ được thêm vào danh sách của chúng tôi.
Việc hiểu danh sách của chúng tôi chỉ chiếm một dòng mã. Trong khi trong ví dụ tiếp theo của chúng tôi, chúng tôi cần sử dụng ba dòng mã với for tuyên bố để làm cho nó hoạt động. Ví dụ tiếp theo của chúng tôi cho thấy mức độ hiểu danh sách giúp bạn viết mã rõ ràng hơn.
Không có Danh sách hiểu
Hãy quay lại ví dụ về bánh pizza gà. Không sử dụng tính năng hiểu danh sách, nếu chúng tôi muốn tạo danh sách các loại pizza gà trên thực đơn của mình, chúng tôi sẽ sử dụng mã này:
pizzas = ['Chicken', 'Margherita', 'Chicken and Bacon', 'Vegan Special', 'Spinach and Brie', 'BBQ Chicken'] chicken_pizzas = [] for pizza in pizzas: if "Chicken" in pizza: chicken_pizzas.append(pizza) print(chicken_pizzas)
Mã của chúng tôi trả về:
[‘Chicken’, ‘Chicken and Bacon’, ‘BBQ Chicken’]
Đầu tiên, chúng tôi xác định hai danh sách. Một danh sách lưu trữ danh sách các loại pizza được bán tại cửa hàng của chúng tôi. Danh sách khác lưu trữ danh sách tất cả các loại pizza gà mà chúng tôi bán. Danh sách pizza gà chúng tôi bán ban đầu trống.
Chúng tôi sử dụng câu lệnh “cho” để xem qua từng bánh pizza trong danh sách các loại pizza của chúng tôi. Sau đó, chúng tôi kiểm tra xem mỗi chiếc bánh pizza có chứa từ Gà hay không. Nếu một chiếc bánh pizza có chứa từ Gà , chúng tôi thêm pizza đó vào danh sách pizza gà của chúng tôi. Trong trường hợp này, ba chiếc bánh pizza chứa Gà và cả ba loại pizza đó đều được thêm vào Chicken_pizzas của chúng tôi danh sách.
Như bạn có thể thấy, để kiểm tra xem một chiếc bánh pizza có chứa Gà không và để thêm nó vào danh sách của chúng tôi, chúng tôi sử dụng ba dòng mã. Có một cách hiệu quả hơn để viết mã này:sử dụng tính năng hiểu danh sách.
Sử dụng if… else
Bạn cũng có thể sử dụng một if… else tuyên bố với một danh sách dễ hiểu.
Trước đó, chúng tôi đã sử dụng if tuyên bố thêm pizza vào danh sách pizza gà của chúng tôi. Chúng tôi chỉ thêm một chiếc bánh pizza nếu tên của chiếc bánh pizza bao gồm cụm từ Gà . Nhưng, giả sử chúng ta đang lập danh sách các loại pizza là đồ chay.
Chúng tôi muốn thêm “Thịt” vào danh sách nếu tên pizza chứa Gà và Ăn chay nếu tên pizza không chứa Gà .
Điều này có thể được thực hiện bằng cách sử dụng toàn bộ danh sách:
pizzas = ['Chicken', 'Margherita', 'Chicken and Bacon', 'Vegan Special', 'Spinach and Brie', 'BBQ Chicken'] is_veggie = ["Meat" if "Chicken" in p else "Vegetarian" for p in pizzas] print(is_veggie)
Mã của chúng tôi trả về:
[‘Meat’, ‘Vegetarian’, ‘Meat’, ‘Vegetarian’, ‘Vegetarian’, ‘Meat’]
Hãy chia nhỏ mã của chúng ta. Đầu tiên, chúng tôi khai báo danh sách các loại pizza được gọi là pizzas . Sau đó, chúng tôi sử dụng khả năng hiểu danh sách để đánh giá xem tên pizza có chứa Gà hay không hoặc không.
Nếu tên pizza chứa Gà , giá trị Thịt được thêm vào is_veggie của chúng tôi danh sách. Nếu không, giá trị Ăn chay được thêm vào.
Như bạn có thể thấy, giá trị đầu tiên trong is_veggie của chúng tôi danh sách là Thịt , vì giá trị tương ứng của nó trong pizza danh sách là Gà . Tuy nhiên, giá trị tiếp theo của chúng tôi là Ăn chay , vì giá trị tương ứng của nó trong pizza danh sách là Margherita , không chứa Gà .
Kết luận
Danh sách hiểu rõ cho phép bạn tạo một danh sách mới dựa trên danh sách hiện có. Sử dụng tính năng hiểu danh sách, bạn có thể tạo bản sao của danh sách hoặc tạo danh sách mới lọc ra các giá trị từ danh sách cũ.
Hướng dẫn này đã thảo luận, có tham chiếu đến các ví dụ, khái niệm cơ bản về danh sách Python và cách sử dụng kỹ thuật hiểu danh sách để tạo danh sách mới.
Bạn có muốn tìm hiểu thêm về cách viết mã bằng Python không? Hãy xem hướng dẫn Cách học Python của chúng tôi. Hướng dẫn này chứa danh sách các tài nguyên học tập để giúp bạn tiếp tục hành trình hướng tới việc thành thạo Python.