Bạn có thể biến một danh sách thành một bộ Python không?

💬 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

set[] và chuyển đổi từng danh sách đó thành một bộ bằng cách sử dụng hàm tích hợp sẵ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[],
  • Lặp lại danh sách bên trong trong một vòng lặp
    Traceback [most recent call last]:
      File "...\code.py", line 2, in 
        my_set = set[my_list]
    TypeError: unhashable type: 'list'
    7 đơn giản,
  • Chuyển đổi danh sách bên trong thành một tuple bất biến bằng cách sử dụng
    Traceback [most recent call last]:
      File "...\code.py", line 2, in 
        my_set = set[my_list]
    TypeError: unhashable type: 'list'
    5 và
  • Thêm bộ mới được tạo vào bộ bằng cách sử dụng
    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

    Ồ vâng, tôi thậm chí còn không biết họ đã đổi tên nó thành Tháp Willis vào năm 2009, bởi vì tôi biết một chút về các tòa nhà chọc trời. — xkcd [nguồn]

    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

    Chủ Đề