Làm thế nào để bạn kết hợp tất cả các yếu tố của một tuple trong python?

Cách Pythonic nhất để hợp nhất nhiều danh sách

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
5 thành một danh sách các bộ dữ liệu [nhóm các phần tử thứ
l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
6 lại với nhau] là sử dụng hàm
l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
7
l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
8. Nếu bạn lưu trữ các danh sách của mình trong một danh sách gồm các danh sách
l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
9, hãy viết
[[0, 1, 2], 
 ['Alice', 'Bob', 'Liz'], 
 [4500.0, 6666.66, 9999.99]]
0 để giải nén tất cả các danh sách bên trong vào hàm zip

l1 = [1, 2, 3]
l2 = [4, 5, 6]
l = list[zip[l1, l2]]
print[l]
# [[1, 4], [2, 5], [3, 6]]

Việc sử dụng thành thạo các cấu trúc dữ liệu có sẵn của Python là một phần không thể thiếu trong quá trình học Python của bạn. Hướng dẫn này chỉ cho bạn cách bạn có thể hợp nhất nhiều danh sách vào biểu diễn “cột”—một danh sách các bộ. Bằng cách nghiên cứu sáu cách khác nhau này, bạn sẽ không chỉ hiểu cách giải quyết vấn đề cụ thể này mà còn trở thành một lập trình viên giỏi hơn về tổng thể

Làm cách nào để hợp nhất các danh sách thành một danh sách các bộ dữ liệu?


Xem video này trên YouTube

Vấn đề. Đưa ra một số danh sách

[[0, 1, 2], 
 ['Alice', 'Bob', 'Liz'], 
 [4500.0, 6666.66, 9999.99]]
1,
[[0, 1, 2], 
 ['Alice', 'Bob', 'Liz'], 
 [4500.0, 6666.66, 9999.99]]
2, …,
[[0, 1, 2], 
 ['Alice', 'Bob', 'Liz'], 
 [4500.0, 6666.66, 9999.99]]
3. Làm cách nào để hợp nhất chúng thành một danh sách các bộ dữ liệu [theo cột]?

Ví dụ. Giả sử, bạn muốn hợp nhất các danh sách sau

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]

vào một danh sách các bộ dữ liệu

[[0, 1, 2], 
 ['Alice', 'Bob', 'Liz'], 
 [4500.0, 6666.66, 9999.99]]

Hướng dẫn này chỉ cho bạn các cách khác nhau để hợp nhất nhiều danh sách thành một danh sách các bộ trong Python 3. Bạn có thể xem tổng quan nhanh trong trình bao Python tương tác của chúng tôi

Tập thể dục. Phương thức nào cần ít ký tự nhất?

Phương pháp 1. Chức năng khóa kéo

Cách Pythonic nhất để hợp nhất nhiều danh sách thành một danh sách các bộ dữ liệu là hàm zip. Nó hoàn thành điều này trong một dòng mã—đồng thời có thể đọc được, ngắn gọn và hiệu quả

Hàm

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
7 lấy một hoặc nhiều lần lặp và tổng hợp chúng thành một lần duy nhất bằng cách kết hợp các giá trị thứ i của mỗi lần lặp thành một bộ. Ví dụ: nén các danh sách
[[0, 1, 2], 
 ['Alice', 'Bob', 'Liz'], 
 [4500.0, 6666.66, 9999.99]]
5 và
[[0, 1, 2], 
 ['Alice', 'Bob', 'Liz'], 
 [4500.0, 6666.66, 9999.99]]
6 thành
[[0, 1, 2], 
 ['Alice', 'Bob', 'Liz'], 
 [4500.0, 6666.66, 9999.99]]
7 cùng nhau

Đây là giải pháp mã

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
6

Đầu ra là danh sách các bộ dữ liệu sau đây

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
7

Lưu ý rằng giá trị trả về của hàm

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
7 là một đối tượng
[[0, 1, 2], 
 ['Alice', 'Bob', 'Liz'], 
 [4500.0, 6666.66, 9999.99]]
9. Bạn cần chuyển đổi nó thành một danh sách bằng cách sử dụng hàm tạo
l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
60 để tạo một danh sách các bộ dữ liệu

Nếu bạn đã lưu trữ các danh sách đầu vào trong một danh sách các danh sách, thì phương pháp sau đây là tốt nhất cho bạn

Phương pháp 2. Chức năng Zip với Giải nén

Bạn có thể sử dụng toán tử dấu hoa thị

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
61 để giải nén tất cả các phần tử bên trong từ một danh sách đã cho
l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
9. Đặc biệt nếu bạn muốn hợp nhất nhiều danh sách khác nhau, điều này có thể làm giảm đáng kể độ dài mã của bạn. Thay vì viết
l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
63, hãy đơn giản hóa thành
[[0, 1, 2], 
 ['Alice', 'Bob', 'Liz'], 
 [4500.0, 6666.66, 9999.99]]
0 để giải nén tất cả các danh sách bên trong vào hàm zip và thực hiện điều tương tự

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
5

Điều này tạo ra danh sách các bộ dữ liệu

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
7

Tôi sẽ cân nhắc sử dụng hàm

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
7 với việc giải nén theo cách Pythonic nhất để hợp nhất nhiều danh sách thành một danh sách các bộ dữ liệu

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

Hiểu danh sách là một cách nhỏ gọn để tạo danh sách. Công thức đơn giản là

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
66

  • Sự biểu lộ. Phải làm gì với từng phần tử danh sách?
  • Bối cảnh. Những yếu tố để lựa chọn?

Ví dụ

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
69 tạo danh sách
l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
70

Bài viết liên quan. Bạn có thể đọc thêm về cách hiểu danh sách trong hướng dẫn cuối cùng của tôi trên blog này

Bạn có thể sử dụng câu lệnh hiểu danh sách đơn giản

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
71 để hợp nhất nhiều danh sách thành một danh sách các bộ

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
4

Đầu ra tạo ra danh sách các bộ dữ liệu được hợp nhất

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
7

Phương pháp này ngắn gọn và hiệu quả. Nó có thể không quá dễ đọc đối với bạn nếu bạn là một lập trình viên mới bắt đầu—nhưng những lập trình viên nâng cao thường không gặp vấn đề gì khi hiểu nội dung này. Nếu bạn thích tìm hiểu mọi thứ về các đoạn mã Python một dòng, hãy xem cuốn sách mới của tôi “Python One-Liners” [xuất bản với Nhà xuất bản San Francisco NoStarch vào năm 2020]

Phương pháp 4. vòng lặp đơn giản

Chắc chắn, bạn có thể bỏ qua tất cả Python ưa thích và chỉ cần sử dụng một vòng lặp đơn giản. Đây là cách nó hoạt động

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
6

Đầu ra là danh sách các bộ dữ liệu được hợp nhất

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
7

Đặc biệt là những lập trình viên đến với Python từ một ngôn ngữ lập trình khác như Go, C++ hoặc Java thích cách tiếp cận này. Họ đã quen với việc viết các vòng lặp và họ có thể nhanh chóng nắm bắt những gì đang diễn ra trong đoạn mã này

Bạn có thể hình dung quá trình thực thi đoạn mã này trong tiện ích tương tác

Tập thể dục. Nhấp vào “Tiếp theo” để xem cách sử dụng bộ nhớ diễn ra khi chạy mã

Phương pháp 5. liệt kê

Phương thức

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
72 được coi là kiểu Python tốt hơn trong nhiều tình huống—ví dụ: nếu bạn muốn lặp qua tất cả các chỉ mục của danh sách. Theo tôi, nó tốt hơn một chút so với sử dụng
l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
73. Đây là cách bạn có thể sử dụng
l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
74 trong mã của mình để hợp nhất nhiều danh sách thành một danh sách các bộ dữ liệu

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
1

Đầu ra là danh sách các bộ dữ liệu

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
7

Vẫn chưa hài lòng?

Phương pháp 6. Bản đồ + Lambda

Với chức năng

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
75 của Python, bạn có thể áp dụng một chức năng cụ thể cho từng thành phần của một lần lặp. Phải mất hai đối số

  • Chức năng. Trong hầu hết các trường hợp, đây là hàm lambda mà bạn xác định nhanh chóng. Đây là chức năng mà bạn sẽ áp dụng cho từng thành phần của một…
  • Có thể lặp lại. Đây là một iterable mà bạn chuyển đổi thành một iterable mới trong đó mỗi phần tử là kết quả của hàm
    l0 = [0, 'Alice', 4500.00]
    l1 = [1, 'Bob', 6666.66]
    l2 = [2, 'Liz', 9999.99]
    76 được áp dụng

Kết quả là một đối tượng

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
77. Điều mà nhiều lập trình viên không biết là hàm
l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
76 cũng cho phép nhiều lần lặp. Trong trường hợp này, hàm lambda nhận nhiều đối số—một đối số cho mỗi lần lặp. Sau đó, nó tạo ra một bộ dữ liệu có thể lặp lại và trả về kết quả này

Đây là cách bạn có thể tạo một danh sách các bộ dữ liệu từ một vài danh sách đã cho

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
3

Đầu ra là danh sách các bộ dữ liệu được hợp nhất

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
7

Đây là một cách hiệu quả và dễ đọc để hợp nhất nhiều danh sách thành một danh sách các bộ dữ liệu. Việc sử dụng hàm

l0 = [0, 'Alice', 4500.00]
l1 = [1, 'Bob', 6666.66]
l2 = [2, 'Liz', 9999.99]
79 với nhiều đối số không được nhiều người biết đến không làm cho điều này trở nên kém đẹp đẽ hơn

Đ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ã trực tuyến của mình 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

Bạn có thể nối một bộ trong Python không?

Phương pháp #1. Sử dụng toán tử + Đây là phương pháp Pythonic nhất và được khuyên dùng để thực hiện tác vụ cụ thể này. Trong trường hợp này, chúng tôi thêm hai bộ dữ liệu và trả về bộ dữ liệu được nối. Không có bộ dữ liệu trước đó được thay đổi trong quá trình này.

Chúng ta có thể nối bộ dữ liệu và danh sách không?

Lỗi "TypeError" của Python. chỉ có thể nối bộ dữ liệu [không phải "danh sách"] thành bộ dữ liệu" xảy ra khi chúng tôi cố gắng nối bộ dữ liệu và danh sách. Để giải quyết lỗi, đảm bảo hai giá trị thuộc loại danh sách hoặc loại tuple trước khi nối chúng .

Chủ Đề