💬 câu hỏi. Đưa ra một danh sách các danh sách [=danh sách lồng nhau] trong Python. Làm cách nào để chuyển đổi danh sách danh sách này thành một tập hợp trong Python?
Đây không phải là một vấn đề nhỏ vì danh sách Python có thể thay đổi và do đó, không thể băm được. Và do đó, chúng không thể được chuyển đổi thành tập hợp bằng cách sử dụng phương pháp set[]
trực tiếp như vậy
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] my_set = set[my_list]
Điều này làm tăng TypeError: unhashable type: 'list'
như có thể thấy ở đầu ra khi thực thi đoạn mã trước đó
Traceback [most recent call last]: File "...\code.py", line 2, in my_set = set[my_list] TypeError: unhashable type: 'list'
Hãy xem các cách khác nhau để giải quyết vấn đề này và chuyển đổi danh sách lồng nhau thành tập hợp trong Python
Phương pháp 1. Đặt mức độ hiểu + tuple[]
Để chuyển đổi một danh sách các danh sách
Traceback [most recent call last]: File "...\code.py", line 2, in my_set = set[my_list] TypeError: unhashable type: 'list'0 thành một tập hợp trong Python, bạn có thể sử dụng biểu thức
Traceback [most recent call last]: File "...\code.py", line 2, in my_set = set[my_list] TypeError: unhashable type: 'list'1 duyệt qua tất cả các danh sách bên trong theo cách hiểu tập hợp và chuyển đổi từng danh sách đó thành một bộ. Bộ dữ liệu là bất biến, có thể băm và do đó có thể được sử dụng theo bộ, không giống như danh sách
Đây là ví dụ mã
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] my_set = {tuple[x] for x in my_list} print[my_set] # {[7, 8, 9], [1, 2, 3], [4, 5, 6]}
Lưu ý cách thứ tự của các phần tử bị mất sau khi chuyển đổi danh sách danh sách thành tập hợp
Vui lòng xem video này để tìm hiểu thêm về hiểu tập hợp
Hiểu tập hợp Python -- Hướng dẫn công thức đơn giản
Traceback [most recent call last]: File "...\code.py", line 2, in my_set = set[my_list] TypeError: unhashable type: 'list'5
Một lần nữa, các bộ dữ liệu là bất biến, có thể băm và do đó có thể được sử dụng theo bộ, không giống như danh sách
________số 8_______Một lớp lót siêu ngắn gọn, phải không?
Bạn có thể tìm hiểu thêm về trình tạo trong video hướng dẫn này — vui lòng xem để xây dựng kiến thức cơ bản của bạn về Python
Hiểu Trình tạo trong Python
set[],Traceback [most recent call last]: File "...\code.py", line 2, in my_set = set[my_list] TypeError: unhashable type: 'list'7 đơn giản,
Traceback [most recent call last]: File "...\code.py", line 2, in my_set = set[my_list] TypeError: unhashable type: 'list'5 và
Traceback [most recent call last]: File "...\code.py", line 2, in my_set = set[my_list] TypeError: unhashable type: 'list'9
Đây là ví dụ mã
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] my_set = set[] for x in my_list: my_set.add[tuple[x]] print[my_set] # {[7, 8, 9], [1, 2, 3], [4, 5, 6]}
🌎 Tìm hiểu thêm. Bạn có thể tìm hiểu thêm về phương pháp
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] my_set = {tuple[x] for x in my_list} print[my_set] # {[7, 8, 9], [1, 2, 3], [4, 5, 6]}0 trong hướng dẫn blog Finxter này
Phương pháp 4. Làm phẳng danh sách các danh sách + Đặt mức độ hiểu
Nếu bạn cần làm phẳng danh sách lồng nhau trước khi chuyển đổi nó thành một tập hợp phẳng, bạn có thể sử dụng cách hiểu tập hợp
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] my_set = {tuple[x] for x in my_list} print[my_set] # {[7, 8, 9], [1, 2, 3], [4, 5, 6]}1 với biểu thức vòng lặp một dòng
Traceback [most recent call last]: File "...\code.py", line 2, in my_set = set[my_list] TypeError: unhashable type: 'list'7 lồng nhau để lặp qua tất cả các phần tử bên trong của danh sách các danh sách
Đây là mã
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] my_set = {i for lst in my_list for i in lst} print[my_set] # {1, 2, 3, 4, 5, 6, 7, 8, 9}
Đây là một video nền về làm phẳng một danh sách các danh sách
Làm phẳng một danh sách các danh sách trong Python
Xem video này trên YouTube
🌎 Tìm hiểu thêm. Bạn có thể tìm hiểu thêm về cách làm phẳng danh sách trong hướng dẫn blog Finxter này
Phương pháp 5. Chuyển đổi danh sách bên trong thành chuỗi
Một cách tiếp cận khác để chuyển đổi danh sách danh sách thành tập hợp là chuyển đổi danh sách bên trong thành chuỗi vì chuỗi là bất biến và có thể băm và do đó có thể được sử dụng làm phần tử tập hợp
{str[lst] for lst in my_list}
Chúng tôi sử dụng hàm
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] my_set = {tuple[x] for x in my_list} print[my_set] # {[7, 8, 9], [1, 2, 3], [4, 5, 6]}3 trong câu lệnh hiểu tập hợp để chuyển đổi danh sách các danh sách thành một tập hợp các chuỗi
Đây là ví dụ mã
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] my_set = {str[lst] for lst in my_list} print[my_set] # {'[7, 8, 9]', '[1, 2, 3]', '[4, 5, 6]'}
🌎 Tìm hiểu thêm. Nếu bạn muốn chuyển đổi biểu diễn chuỗi của danh sách trở lại danh sách, bạn có thể tìm hiểu thêm trong hướng dẫn Finxter này
Tóm lược
Năm cách Pythonic nhất để chuyển đổi danh sách danh sách thành tập hợp trong Python là
Vui lòng xem thêm các hướng dẫn miễn phí và cheat sheet để học và cải thiện kỹ năng Python của bạn trong học viện email miễn phí của chúng tôi
hài hước mọt sách
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