Chạy tính năng hiểu danh sách trên danh sách lồng nhau sẽ tạo danh sách mới bằng cách thực hiện thao tác trên từng phần tử lồng nhau. Trong bài đăng này, tôi sẽ giải thích cách chạy tính năng hiểu danh sách lồng nhau và đề cập đến một số câu hỏi phổ biến mà người dùng có Show
Khả năng hiểu danh sách lồng nhau trong Python là gì?Hiểu danh sách là một phương thức trong Python tạo danh sách mới bằng cách chạy một thao tác trên danh sách hiện có. Khả năng hiểu danh sách lồng nhau là khi quy trình này được chạy trên một danh sách các danh sách trong đó mỗi phần tử và danh sách lồng nhau được vận hành theo. Giải pháp thay thế phổ biến cho việc sử dụng tính năng hiểu danh sách lồng nhau là vòng lặp for, vòng lặp này thường chậm hơn và yêu cầu nhiều mã hơn Ví dụ đơn giản về cú pháp hiểu danh sáchDưới đây là một ví dụ về cú pháp để hiểu danh sách tiêu chuẩn
Ví dụ đơn giản về cú pháp hiểu danh sách lồng nhauPhát triển dựa trên ví dụ tiêu chuẩn, đây là cú pháp để hiểu danh sách lồng nhau
Các lựa chọn thay thế để hiểu danh sách lồng nhau trong PythonKhi tạo danh sách mới từ danh sách hiện có, có sẵn một số lựa chọn thay thế. Hãy so sánh hai lựa chọn thay thế phổ biến nhất. cho các hàm vòng lặp và lambda Sự khác biệt giữa hiểu danh sách và vòng lặp for là gì?Sự khác biệt chính giữa hiểu danh sách và vòng lặp for là tốc độ. Nói chung, việc hiểu danh sách nhanh hơn vòng lặp for khi chạy các thao tác để tạo danh sách mới. Một điểm khác biệt nhỏ nữa là việc hiểu danh sách dẫn đến mã sạch hơn vì nó chiếm ít dòng hơn so với vòng lặp for Khả năng hiểu danh sách có nhanh hơn vòng lặp for không?Có, khả năng hiểu danh sách thường nhanh hơn vòng lặp for khi tạo danh sách mới Sự khác biệt giữa chức năng lambda và hiểu danh sách là gì?Sự khác biệt chính giữa khả năng hiểu danh sách và hàm lambda là khả năng hiểu danh sách tạo ra một danh sách mới, trong khi hàm lambda có thể dẫn đến một danh sách mới hoặc một giá trị. Một sự khác biệt nữa là tốc độ. Trong hầu hết các trường hợp sử dụng điển hình, khả năng hiểu danh sách tạo danh sách mới nhanh hơn hàm lambda Lambda có nhanh hơn khả năng hiểu danh sách không?Cả hàm lambda và khả năng hiểu danh sách đều là những phương pháp hiệu quả để tạo danh sách mới trong Python, nhưng nhìn chung khả năng hiểu danh sách là phương pháp nhanh hơn để tạo danh sách mới Ví dụ hiểu danh sách lồng nhau trong PythonGiả sử rằng bạn có một danh sách lồng nhau trong Python và bạn muốn chạy tính năng hiểu danh sách trên từng phần tử của danh sách lồng nhau Dưới đây là hai ví dụ về cách điều này có thể được thực thi, dẫn đến một danh sách nối đơn hoặc giữ nguyên cấu trúc lồng nhau ban đầu Hiểu danh sách trên danh sách lồng nhau và nối với một ví dụ về danh sáchVí dụ này sẽ chạy một thao tác trên từng phần tử của danh sách lồng nhau và tạo một danh sách mới với cấu trúc lồng nhau hiện có 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
Ngoài
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 8
Ngoài
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àngTrong 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 độngKhả 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ạoTrì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à 3 là năng suất 2Ngoài 3Trong 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 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ớiCâu lệnh điều kiện trong việc hiểu danh sáchHã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ốn 7Ngoài 8Hì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 Chúng tôi thậm chí có thể thêm vào một điều kiện khác để bỏ qua các số nhỏ hơn tám. Ở đây, chúng ta có thể sử dụng 7 bên trong cách hiểu danh sách 00Ngoài 01Nhưng chúng ta cũng có thể viết điều này mà không cần 7 như 02Ngoài 01Khi 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ề 0 hay 1 cho mỗi kết quả. Khi câu lệnh 6 trả về 0, kết quả được thêm vào danh sách mớiThêm chức năng để hiểu danh sáchKhả 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 04Ngoài 05Chú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 06Ngoài 07Trong 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ướiSử dụng toán tử so sánhKhả năng hiểu danh sách cũng hoạt động với 6, 7 và 8Giống như trong ví dụ trên khi sử dụng 7, chúng ta cũng có thể sử dụng 6 08Ngoài 09Sử dụng 7, chúng tôi cũng có thể kiểm tra các danh sách khác 0Ngoài 1Tương tự như vậy, 22 cũng có thể 2Ngoài 3Cuố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ạm vi 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 nhau 4Ngoài 5Ví 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 25. Xem hình ảnh bên dưới để biết hình ảnh đại diện cho những gì đang xảy raHiểu nhiều danh sáchĐương nhiên, bạn có thể muốn sử dụng cách hiểu danh sách với hai danh sách cùng một lúc. Các ví dụ sau minh họa các trường hợp sử dụng khác nhau để hiểu nhiều danh sách Làm phẳng danh sáchSynax sau đây là phiên bản phổ biến nhất của hiểu nhiều danh sách, mà chúng tôi sẽ sử dụng để làm phẳng một danh sách các danh sách 6Ngoài 7Thứ 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 nhauChúng ta có thể sử dụng khả năng hiểu nhiề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 8Ngoài 9khả năng đọcVấ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 0Ngoài 9Giả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 27 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 2Ngoài 3Như 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 4Ngoài 3Kiểm tra tốc độ. Danh sách hiểu vs. cho vòng lặpKhi 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ý danh sách từng mục một có thể mất nhiều thời gianHã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 8 và khả năng hiểu danh sách để tạo danh sách mới chứa các giá trị 7 lớn hơn nửa triệu. Cuối cùng, sử dụng 32, chúng ta có thể so sánh tốc độ của hai cách tiếp cận 6Ngoà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 đáng 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áchCuố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. Bản tóm tắtKhả 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Đố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ạnTham 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ạnTham 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 Bạn có thể lồng khả năng hiểu danh sách trong Python không?Hóa ra, bạn có thể lồng khả năng hiểu danh sách vào một khả năng hiểu danh sách khác để giảm thêm mã của bạn và vẫn dễ đọc hơn. Trên thực tế, không có giới hạn về số lần hiểu mà bạn có thể lồng vào nhau, điều này giúp bạn có thể viết mã rất phức tạp trong một dòng.
Khả năng hiểu danh sách có nhanh hơn vòng lặp for không?Việc hiểu danh sách nhanh hơn vòng lặp for để tạo danh sách . Tuy nhiên, điều này là do chúng tôi đang tạo danh sách bằng cách thêm các phần tử mới vào danh sách đó ở mỗi lần lặp lại.
Danh sách lồng nhau giải thích bằng ví dụ trong Python là gì?Như chúng ta đã biết, danh sách đó có thể chứa bất kỳ đối tượng nào, vì vậy ở đây khái niệm danh sách lồng nhau được giới thiệu. Vì vậy, đơn giản, khi có một danh sách chứa một danh sách bên trong chính nó là một phần tử (danh sách con) hoặc dữ liệu, thì danh sách đó được gọi là danh sách lồng nhau |