Khóa học Phát triển Python Nâng cao
Chương
>
Cấp độ
Danh sách nâng cao
Biểu thức tổng hợp danh sách
Trong chương này, chúng ta sẽ khám phá các cách mới để sử dụng danh sách trong Python, liên quan đến tối ưu hóa, phân chia thành các phần và thậm chí cả việc tạo ra các danh sách đa chiều lớn như ma trận, rất giống với các bảng.
Ở cấp độ này, chúng ta sẽ làm việc với List Comprehensions, đó là những danh sách có thể được tạo ra từ các danh sách khác bằng cách chỉ chọn một số thành phần nhất định từ chúng. Điều này cũng được thực hiện trong một dòng lệnh rất đơn giản mà không cần phải nhập danh sách một cách thủ công hoặc phát triển các tự động hóa phức tạp.

Mục tiêu
Lấy và sắp xếp tất cả các loại củ trong tủ chứa đồ để bạn có thể cất chúng vào đúng vị trí bằng cách sử dụng list comprehensions.
Trong tủ chứa đồ có nhiều bao đầy các loại củ cần được sắp xếp, bao gồm: potatoes, onions và garlic; có thể một số loại rau củ đã hỏng. Hãy lấy ra những loại rau củ còn tốt và cất chúng vào các thùng chứa tương ứng.
Để thực hiện điều này, bạn cần xác định các mục bên trong mỗi bao; có ba (3) hằng số danh sách chứa thông tin của từng bao, được đặt tên là: left_sack, middle_sack, right_sack. Những hằng số này tương ứng với các bao trên sân theo vị trí được nêu trong tên của chúng.
Hãy đi đến những dấu X sáng ở phía trước mỗi bao và sử dụng hàm speak() để xác định nội dung của từng bao thông qua các hằng số, ví dụ: player.speak(left_sack). Sau khi bạn xác định được nội dung bên trong mỗi bao, hãy nhận diện các mục cần loại bỏ như những loại rau củ có chứa từ "Bad", "Spoiled" hoặc "Rotten" trong tên của chúng.
Bạn cần tạo ra các danh sách mới chỉ chứa các mục tốt để có thể tiêu thụ; bạn có thể làm điều này thủ công nhưng sẽ mất thời gian và có thể gây nhầm lẫn. Để thực hiện việc này hiệu quả hơn, bạn có thể tạo một danh sách từ danh sách khác, được gọi là List Comprehension.
Từ ba (3) hằng số danh sách: left_sack, middle_sack, right_sack hãy tạo ra ba danh sách mới với tên: potatoes, onions và garlic mà không chứa các mục không mong muốn trong các bao. List Comprehensions cho phép bạn tạo danh sách mới mà không cần viết quá nhiều mã, ví dụ:
# Original list sack = ["Potatoes", "Sweet Potatoes", "Spoiled Potatoes" ] # List Comprehension potatoes = [x for x in sack if not "Spoiled" in x] # This will create a list named potatoes with: # ["Potatoes", "Sweet Potatoes"]
Trong ví dụ trên, danh sách có tên potatoes được tạo ra từ danh sách sack chỉ chứa ["Potatoes", "Sweet Potatoes"] và loại trừ "Spoiled Potatoes". Điều này được thực hiện bằng cách tạo một vòng lặp for độc lập, trong trường hợp này sử dụng x làm chỉ số để duyệt qua danh sách và các câu lệnh for / in để nhận diện và loại bỏ thành phần không mong muốn, cụ thể là bất kỳ chuỗi nào chứa từ "Spoiled".
Để ôn lại, hãy kiểm tra xem các hằng số danh sách có chứa các từ "Bad", "Spoiled" hoặc "Rotten" hay không bằng cách sử dụng hàm speak(), tạo các danh sách potatoes, onions và garlic bằng cách sử dụng List Comprehensions để loại bỏ những thành phần không mong muốn mà bạn tìm thấy trong mỗi danh sách.
Sau khi các danh sách này được tạo ra, hãy đi đến từng một trong ba dấu X vàng ở phía trước các thùng chứa có biển hiệu rau củ, và đặt các danh sách đó vào các thùng chứa tương ứng bằng cách sử dụng hàm place() để hoàn thành cấp độ. Vị trí của các thùng được chỉ định bởi các biển hiệu, cụ thể là onions ở thùng bên trái, potatoes ở thùng giữa và garlic ở thùng bên trái.