Cách xóa danh sách khỏi danh sách lồng nhau trong Python

Câu trả lời ngắn. Bạn có thể xóa tất cả danh sách trống khỏi danh sách bằng cách sử dụng câu lệnh hiểu danh sách [x for x in list if x] để lọc danh sách

Làm cách nào để xóa Danh sách trống khỏi Danh sách Danh sách trong Python?


Xem video này trên YouTube

Trong phần sau, bạn sẽ tìm hiểu về hai phương pháp sử dụng tính năng hiểu danh sách và hàm filter[] để xóa tất cả danh sách trống khỏi danh sách danh sách

Nhưng trước đó, hãy tự chơi với mã

Phương pháp 1. Danh sách hiểu

Làm cách nào bạn có thể xóa tất cả danh sách trống khỏi danh sách danh sách?

[[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]

và bạn muốn loại bỏ tất cả các danh sách trống để lấy danh sách các danh sách

[[1, 2, 3], [1, 2], [1, 2, 3, 4]]

Dung dịch. Sử dụng khả năng hiểu danh sách [x for x in list if x] để lọc danh sách và xóa tất cả các danh sách trống

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[[x for x in lst if x]]
# [[1, 2, 3], [1, 2], [1, 2, 3, 4]]

Điều kiện nếu x đánh giá thành False chỉ khi danh sách x trống. Trong tất cả các trường hợp khác, nó ước tính là

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
0 và phần tử được đưa vào danh sách mới

Bạn có thể hình dung quy trình thực thi tại đây bằng cách nhấp vào nút “Tiếp theo”

Phương pháp 2. lọc[]

Một cách khác là sử dụng hàm

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
0 để xóa tất cả danh sách trống khỏi danh sách danh sách

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]

Hàm filter[] nhận hai đối số

  • chức năng quyết định bộ lọc để kiểm tra xem từng phần tử có nên được đưa vào lần lặp được lọc hay không [nó trả về giá trị Boolean] và
  • iterable được lọc

Là chức năng quyết định bộ lọc, bạn sử dụng chức năng nhận dạng chỉ chuyển danh sách qua. Tại sao điều này làm việc? . Tất cả các danh sách khác sẽ được đánh giá là

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
0 [và do đó, vượt qua bài kiểm tra lọc]

Những bài viết liên quan

  • Làm cách nào để lọc danh sách trong Python?
  • Lọc so với hiểu danh sách [Tốc độ]
  • Danh sách hiểu
  • danh sách danh sách

Đi đâu từ đây?

Đủ lý thuyết. Hãy thực hành một số

Các lập trình viên được trả sáu con số trở lên vì họ có thể giải quyết vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa

Để trở nên thành công hơn trong việc viết mã, hãy giải quyết nhiều vấn đề thực tế hơn cho người thực. Đó là cách bạn trau dồi những kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, việc sử dụng lý thuyết học tập mà không ai cần là gì?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế

Bạn có muốn ngừng học với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không?

🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người mới hoàn toàn

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã của mình trực tuyến cũng như cách bạn có thể làm được—từ sự thoải mái của bạn

Tham gia hội thảo trên web miễn phí ngay bây giờ

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Toán tử in kiểm tra tư cách thành viên. Ví dụ:

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
3 đánh giá thành
lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
0 nếu x là thành viên của
lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
6, nếu không, nó đánh giá thành False

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
8 trả về phủ định của
lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
3

Nếu điều kiện được đáp ứng, chúng tôi sử dụng phương pháp

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
0 để thêm danh sách vào danh sách mới

Danh sách. Phương thức append[] thêm một mục vào cuối danh sách

Danh sách mới không chứa bất kỳ danh sách trùng lặp nào

Ngoài ra, bạn có thể sử dụng phương pháp

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
1

Để xóa các bản sao khỏi danh sách các danh sách

  1. Sử dụng phương pháp
    lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
    print[list[filter[lambda x: x, lst]]]
    
    2 để sắp xếp danh sách
  2. Sử dụng phương pháp
    lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
    print[list[filter[lambda x: x, lst]]]
    
    1 để nhóm các danh sách lồng nhau
  3. Sử dụng lớp
    lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
    print[list[filter[lambda x: x, lst]]]
    
    01 để chuyển đổi kết quả thành danh sách

Chúng tôi đã sử dụng itertools. phương pháp nhóm để loại bỏ các bản sao khỏi danh sách các danh sách

Lưu ý rằng danh sách phải được sắp xếp trước khi chúng ta sử dụng phương thức

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
02 vì phương thức này tạo ra một nhóm mới mỗi khi khóa thay đổi

Chúng tôi đã sử dụng biểu thức trình tạo để lặp qua trình vòng lặp và sử dụng dấu gạch dưới để bỏ qua các đối tượng

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
03

Biểu thức trình tạo được sử dụng để thực hiện một số thao tác cho mọi phần tử hoặc chọn một tập hợp con các phần tử đáp ứng một điều kiện

Lưu ý rằng phương pháp này yêu cầu chúng tôi sắp xếp danh sách trước

Danh sách. phương pháp sắp xếp sắp xếp danh sách tại chỗ và nó chỉ sử dụng so sánh

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
04 giữa các mục

Ngoài ra, bạn có thể chuyển đổi danh sách danh sách thành tập hợp

Để xóa các bản sao khỏi danh sách các danh sách

  1. Sử dụng khả năng hiểu danh sách để chuyển đổi từng danh sách lồng nhau thành một bộ
  2. Chuyển đổi danh sách các bộ dữ liệu thành
    lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
    print[list[filter[lambda x: x, lst]]]
    
    05 để loại bỏ các bản sao
  3. Sử dụng khả năng hiểu danh sách để chuyển đổi
    lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
    print[list[filter[lambda x: x, lst]]]
    
    05 thành danh sách các danh sách

Lưu ý rằng chúng tôi phải chuyển đổi từng danh sách lồng nhau thành

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
07 trước khi chuyển đổi thành
lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
05

Điều này là cần thiết vì bộ dữ liệu là bất biến và có thể băm, trong khi danh sách có thể thay đổi và không thể băm [không thể là thành viên của

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
05]

Các đối tượng tập hợp là một tập hợp các phần tử duy nhất không có thứ tự, vì vậy khi chúng tôi chuyển đổi danh sách các bộ dữ liệu thành

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
05, tất cả các phần tử trùng lặp sẽ tự động bị xóa

Tuy nhiên, một điều cần lưu ý -

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
05 đối tượng không có thứ tự, vì vậy bạn không đảm bảo rằng thứ tự của các mục trong danh sách sẽ được giữ nguyên

Nếu bạn cần chắc chắn rằng thứ tự của các bộ trong danh sách sẽ được giữ nguyên, hãy sử dụng giải pháp vòng lặp x2

Lớp set[] lấy một đối số tùy chọn có thể lặp lại và trả về một đối tượng

lst = [[1, 2, 3], [1, 2], [], [], [], [1, 2, 3, 4], [], []]
print[list[filter[lambda x: x, lst]]]
05 mới với các phần tử được lấy từ đối tượng có thể lặp lại

Chủ Đề