Sử dụng khả năng hiểu danh sách, chúng tôi muốn nối bất kỳ giá trị nào lớn hơn mười vào danh sách mới. Chúng ta có thể làm điều này như sau
new_list = [num for num in num_list if num > 10] new_list
Learn Data Science with
Ngoài
[11, 19, 25, 12]
Learn Data Science with
Giải pháp này về cơ bản tuân theo quy trình tương tự như sử dụng vòng lặp
8 để thực hiện công việc, nhưng sử dụng khả năng hiểu danh sách thường có thể là một kỹ thuật gọn gàng và hiệu quả hơn. Ví dụ dưới đây cho thấy cách chúng ta có thể tạo danh sách mới bằng cách sử dụng vòng lặp[11, 19, 25, 12]
Learn Data Science with
8[11, 19, 25, 12]
Learn Data Science with
new_list = [] for num in num_list: if num > 10: new_list.append[num] new_list
Learn Data Science with
Ngoài
[11, 19, 25, 12]
Learn Data Science with
Sử dụng khả năng hiểu danh sách thay vì vòng lặp
8, chúng tôi đã quản lý để gói bốn dòng mã vào một câu lệnh rõ ràng[11, 19, 25, 12]
Learn Data Science with
Trong bài viết này, trước tiên chúng ta sẽ xem xét các cách khác nhau để sử dụng tính năng hiểu danh sách để tạo danh sách mới. Sau đó, chúng ta sẽ xem lợi ích của việc sử dụng khả năng hiểu danh sách là gì. Cuối cùng, chúng ta sẽ xem cách giải quyết vấn đề hiểu nhiều danh sách
Cách hiểu danh sách hoạt động
Khả năng hiểu danh sách hoạt động bằng cách dịch các giá trị từ danh sách này sang danh sách khác bằng cách đặt câu lệnh
8 bên trong một cặp dấu ngoặc, được gọi chính thức là biểu thức trình tạo[11, 19, 25, 12]
Learn Data Science with
Trình tạo là một đối tượng có thể lặp lại, mang lại một loạt các giá trị. Hãy xem xét ví dụ sau, trong đó
2 là trình tạo của chúng tôi vànew_list = [] for num in num_list: if num > 10: new_list.append[num] new_list
Learn Data Science with
3 là sản lượngnew_list = [] for num in num_list: if num > 10: new_list.append[num] new_list
Learn Data Science with
0[11, 19, 25, 12]
Learn Data Science with
Ngoài
1[11, 19, 25, 12]
Learn Data Science with
Trong trường hợp này, Python đã lặp qua từng mục trong
7, lưu trữ tạm thời các giá trị bên trong biến[11, 19, 25, 12]
Learn Data Science with
3. Chúng tôi chưa thêm bất kỳ điều kiện nào vào phần hiểu danh sách, vì vậy tất cả các giá trị được lưu trữ trong danh sách mớinew_list = [] for num in num_list: if num > 10: new_list.append[num] new_list
Learn Data Science with
Câu lệnh điều kiện trong việc hiểu danh sách
Hãy thử thêm vào một câu lệnh
6 để việc hiểu chỉ thêm các số lớn hơn bốnnew_list = [] for num in num_list: if num > 10: new_list.append[num] new_list
Learn Data Science with
5[11, 19, 25, 12]
Learn Data Science with
Ngoài
6[11, 19, 25, 12]
Learn Data Science with
Hình ảnh dưới đây đại diện cho quá trình tiếp theo trong phần hiểu danh sách trên
Learn Data Science with
7 bên trong cách hiểu danh sách80[11, 19, 25, 12]
Learn Data Science with
Ngoài
81[11, 19, 25, 12]
Learn Data Science with
Nhưng chúng ta cũng có thể viết điều này mà không cần
7 nhưnew_list = [] for num in num_list: if num > 10: new_list.append[num] new_list
Learn Data Science with
82[11, 19, 25, 12]
Learn Data Science with
Ngoài
81[11, 19, 25, 12]
Learn Data Science with
Khi sử dụng câu điều kiện, Python sẽ kiểm tra xem câu lệnh
6 của chúng ta trả vềnew_list = [] for num in num_list: if num > 10: new_list.append[num] new_list
Learn Data Science with
0 hay[11, 19, 25, 12]
Learn Data Science with
1 cho mỗi kết quả. Khi câu lệnh[11, 19, 25, 12]
Learn Data Science with
6 trả vềnew_list = [] for num in num_list: if num > 10: new_list.append[num] new_list
Learn Data Science with
0, kết quả được thêm vào danh sách mới[11, 19, 25, 12]
Learn Data Science with
Thêm chức năng để hiểu danh sách
Khả năng hiểu danh sách không chỉ giới hạn trong việc lọc ra các giá trị danh sách không mong muốn mà chúng ta còn có thể sử dụng chúng để áp dụng chức năng cho các giá trị được thêm vào. Ví dụ: giả sử chúng tôi muốn tạo một danh sách chứa các giá trị bình phương từ danh sách ban đầu
84[11, 19, 25, 12]
Learn Data Science with
Ngoài
85[11, 19, 25, 12]
Learn Data Science with
Chúng tôi cũng có thể kết hợp bất kỳ chức năng bổ sung nào với các toán tử so sánh. Chúng ta đã sử dụng rất nhiều từ
7, vì vậy hãy thay đổi nó và bắt đầu sử dụng một danh sách khác cho các ví dụ của chúng ta[11, 19, 25, 12]
Learn Data Science with
86[11, 19, 25, 12]
Learn Data Science with
Ngoài
87[11, 19, 25, 12]
Learn Data Science with
Trong ví dụ trên, khả năng hiểu danh sách của chúng tôi đã bình phương bất kỳ giá trị nào trong
5 nằm trong khoảng từ ba mươi đến năm mươi. Để giúp chứng minh những gì đang xảy ra ở trên, hãy xem sơ đồ bên dưới[11, 19, 25, 12]
Learn Data Science with
Learn Data Science with
6,7 và[11, 19, 25, 12]
Learn Data Science with
8[11, 19, 25, 12]
Learn Data Science with
Giống như trong ví dụ trên khi sử dụng
7, chúng ta cũng có thể sử dụngnew_list = [] for num in num_list: if num > 10: new_list.append[num] new_list
Learn Data Science with
6[11, 19, 25, 12]
Learn Data Science with
88[11, 19, 25, 12]
Learn Data Science with
Ngoài
89[11, 19, 25, 12]
Learn Data Science with
Sử dụng
7, chúng tôi cũng có thể kiểm tra các danh sách khác[11, 19, 25, 12]
Learn Data Science with
0new_list = [num for num in num_list if num > 10] new_list
Learn Data Science with
Ngoài
1new_list = [num for num in num_list if num > 10] new_list
Learn Data Science with
Tương tự như vậy,
02 cũng có thể[11, 19, 25, 12]
Learn Data Science with
2new_list = [num for num in num_list if num > 10] new_list
Learn Data Science with
Ngoài
3new_list = [num for num in num_list if num > 10] new_list
Learn Data Science with
Cuối cùng, chúng ta có thể sử dụng các câu lệnh
6 trước các biểu thức trình tạo trong phần hiểu danh sách. Bằng cách này, chúng ta có thể cho Python biết cách xử lý các giá trị khác nhaunew_list = [] for num in num_list: if num > 10: new_list.append[num] new_list
Learn Data Science with
4new_list = [num for num in num_list if num > 10] new_list
Learn Data Science with
Ngoài
5new_list = [num for num in num_list if num > 10] new_list
Learn Data Science with
Ví dụ trên lưu trữ các giá trị trong danh sách mới của chúng tôi nếu chúng lớn hơn bốn mươi; . Python lưu trữ số không ở vị trí của chúng đối với các giá trị không lớn hơn bốn mươi, theo hướng dẫn của
05. Xem hình ảnh bên dưới để biết hình ảnh đại diện cho những gì đang xảy ra[11, 19, 25, 12]
Learn Data Science with
Learn Data Science with
6Ngoài
7new_list = [num for num in num_list if num > 10] new_list
Learn Data Science with
Thứ tự của các vòng lặp trong kiểu hiểu danh sách này hơi phản trực giác và khó nhớ, vì vậy hãy chuẩn bị để tra cứu lại trong tương lai. Dù vậy, cú pháp làm phẳng danh sách vẫn hữu ích cho các bài toán khác yêu cầu kiểm tra hai danh sách để tìm giá trị
Danh sách lồng nhau
Chúng ta có thể sử dụng nhiều khả năng hiểu danh sách khi có liên quan đến danh sách lồng nhau. Giả sử chúng ta có một danh sách các danh sách được điền bằng các giá trị kiểu chuỗi. Nếu chúng tôi muốn chuyển đổi các giá trị này từ kiểu chuỗi sang kiểu số nguyên, chúng tôi có thể thực hiện việc này bằng cách sử dụng nhiều cách hiểu danh sách như sau
8new_list = [num for num in num_list if num > 10] new_list
Learn Data Science with
Ngoài
9new_list = [num for num in num_list if num > 10] new_list
Learn Data Science with
khả năng đọc
Vấn đề với việc sử dụng nhiều cách hiểu danh sách là chúng có thể khó đọc, gây khó khăn hơn cho các nhà phát triển khác và chính bạn trong tương lai. Để chứng minh điều này, đây là giải pháp đầu tiên trông như thế nào khi kết hợp khả năng hiểu danh sách với vòng lặp
8[11, 19, 25, 12]
Learn Data Science with
0[11, 19, 25, 12]
Learn Data Science with
Ngoài
9new_list = [num for num in num_list if num > 10] new_list
Learn Data Science with
Giải pháp kết hợp của chúng tôi không bóng bẩy khi nhìn vào, nhưng cũng dễ dàng hơn để phân tách và tìm ra điều gì đang xảy ra đằng sau hậu trường. Không có giới hạn về mức độ hiểu nhiều danh sách có thể đi sâu. Nếu
07 có nhiều danh sách được lồng trong các danh sách lồng nhau của nó, chúng ta có thể thực hiện chuyển đổi số nguyên như sau[11, 19, 25, 12]
Learn Data Science with
2[11, 19, 25, 12]
Learn Data Science with
Ngoài
3[11, 19, 25, 12]
Learn Data Science with
Như ví dụ cho thấy, việc hiểu nhiều danh sách của chúng tôi hiện đã trở nên rất khó đọc. Người ta thường đồng ý rằng việc hiểu nhiều danh sách không nên đi sâu hơn hai cấp độ; . Để chứng minh quan điểm, đây là cách chúng ta có thể sử dụng vòng lặp for để giải quyết vấn đề trên
4[11, 19, 25, 12]
Learn Data Science with
Ngoài
3[11, 19, 25, 12]
Learn Data Science with
Kiểm tra tốc độ. Danh sách hiểu vs. cho vòng lặp
Khi làm việc với các danh sách trong Python, có thể bạn sẽ thường thấy mình trong các tình huống cần dịch các giá trị từ danh sách này sang danh sách khác dựa trên các tiêu chí cụ thể
Nói chung, nếu bạn đang làm việc với các tập dữ liệu nhỏ, thì sử dụng vòng lặp
8 thay vì hiểu danh sách không phải là tận thế. Tuy nhiên, khi kích thước tập dữ liệu của bạn bắt đầu tăng lên, bạn sẽ nhận thấy rằng việc xử lý từng mục một trong danh sách có thể mất nhiều thời gian[11, 19, 25, 12]
Learn Data Science with
Hãy tạo một danh sách mười nghìn số ngẫu nhiên, có giá trị từ một đến một triệu và lưu trữ danh sách này dưới dạng
7. Sau đó, chúng tôi có thể sử dụng vòng lặp[11, 19, 25, 12]
Learn Data Science with
8 và khả năng hiểu danh sách để tạo danh sách mới chứa các giá trị[11, 19, 25, 12]
Learn Data Science with
7 lớn hơn nửa triệu. Cuối cùng, sử dụng[11, 19, 25, 12]
Learn Data Science with
12, chúng ta có thể so sánh tốc độ của hai cách tiếp cận[11, 19, 25, 12]
Learn Data Science with
6[11, 19, 25, 12]
Learn Data Science with
Ngoài
gõmicro giây1danh sách hiểu288. 850 cho vòng lặp416. 94
Giải pháp hiểu danh sách chạy nhanh gấp đôi, do đó, nó không chỉ sử dụng ít mã hơn mà còn nhanh hơn nhiều. Với ý nghĩ đó, cũng cần lưu ý rằng các vòng lặp
8 có thể dễ đọc hơn nhiều trong một số trường hợp nhất định, chẳng hạn như khi sử dụng nhiều cách hiểu danh sách[11, 19, 25, 12]
Learn Data Science with
Cuối cùng, nếu bạn đang ở một vị trí cần phải hiểu nhiều danh sách, bạn có muốn ưu tiên hiệu suất hơn khả năng đọc hay không là tùy thuộc vào bạn.
Tóm lược
Khả năng hiểu danh sách là một công cụ tuyệt vời để tạo danh sách mới dựa trên yêu cầu của bạn. Chúng nhanh hơn nhiều so với sử dụng vòng lặp
8 và có thêm lợi ích là làm cho mã của bạn trông gọn gàng và chuyên nghiệp[11, 19, 25, 12]
Learn Data Science with
Đối với những trường hợp bạn đang làm việc với danh sách lồng nhau, bạn cũng có thể hiểu nhiều danh sách. Khái niệm sử dụng khả năng hiểu lúc đầu có vẻ hơi phức tạp, nhưng một khi bạn đã hiểu chúng, bạn sẽ không bao giờ nhìn lại
Bắt đầu học miễn phí
Nhận thông tin cập nhật trong hộp thư đến của bạn
Tham gia cùng hơn 7.500 người học khoa học dữ liệu
Bài viết gần đây
Ưu đãi khóa học tốt nhất cho Thứ Sáu Đen và Thứ Hai Điện Tử 2022Hàm sigmoidchấm sản phẩm7 khóa học về trí tuệ nhân tạo [AI] tốt nhất năm 2022Các khóa học Python tốt nhất theo phân tích dữ liệu
Trong số khoảng 3000 dịch vụ, đây là những khóa học Python tốt nhất theo phân tích này
xem bài viếtNhận thông tin cập nhật trong hộp thư đến của bạn
Tham gia cùng hơn 7.500 người học khoa học dữ liệu
Gặp gỡ các tác giả
Nhà khoa học dữ liệu Alfie Grace
Alfie tốt nghiệp Thạc sĩ Kỹ thuật Cơ khí tại Đại học College London. Anh ấy hiện đang làm Nhà khoa học dữ liệu tại Square Enix. Tìm anh ấy trên LinkedIn