Tóm tắt: Trong hướng dẫn này, bạn sẽ học cách giải nén danh sách trong Python để làm cho mã của bạn súc tích hơn.: in this tutorial, you’ll learn how to unpack a list in Python to make your code more concise.
Giới thiệu về danh sách giải nén
Ví dụ sau đây xác định danh sách các chuỗi:
Code language: Python [python]
colors = ['red', 'blue', 'green']
Để gán các phần tử thứ nhất, thứ hai và thứ ba của danh sách cho các biến, bạn có thể gán các yếu tố riêng lẻ cho các biến như thế này:
Code language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
Tuy nhiên, Python cung cấp một cách tốt hơn để làm điều này. Nó được gọi là trình tự giải nén.
Về cơ bản, bạn có thể gán các yếu tố của một danh sách [và cũng là một tuple] cho nhiều biến. Ví dụ:
Code language: Python [python]
red, blue, green = colors
Câu lệnh này gán các phần tử thứ nhất, thứ hai và thứ ba của danh sách
7 cho các biếnCode language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
8,Code language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
9 vàCode language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
0.Code language: Python [python]
red, blue, green = colors
Trong ví dụ này, số lượng biến ở phía bên trái giống như số lượng các phần tử trong danh sách ở phía bên phải.
Nếu bạn sử dụng số lượng biến số ở phía bên trái hơn, bạn sẽ gặp lỗi. Ví dụ:
Code language: Python [python]
colors = ['red', 'blue', 'green'] red, blue = colors
Error:
Code language: Python [python]
ValueError: too many values to unpack [expected 2]
Trong trường hợp này, Python không thể giải nén ba yếu tố cho hai biến.
Giải nén và đóng gói
Nếu bạn muốn giải nén một vài yếu tố đầu tiên của danh sách và không quan tâm đến các yếu tố khác, bạn có thể:
- Đầu tiên, giải nén các yếu tố cần thiết cho các biến.
- Thứ hai, đóng gói các phần tử còn lại vào một danh sách mới và gán nó cho một biến khác.
Bằng cách đặt dấu hoa thị [
1] trước một tên biến, bạn sẽ đóng gói các phần tử còn lại vào một danh sách và gán chúng cho một biến. Ví dụ:Code language: Python [python]
red, blue, green = colors
Code language: Python [python]
colors = ['red', 'blue', 'green'] red, blue, *other = colors print[red] print[blue] print[other]
Output:
red blue ['green']
Code language: Python [python]
Ví dụ này gán các phần tử thứ nhất và thứ hai của danh sách
7 cho các biếnCode language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
8 vàCode language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
0. Và nó gán phần tử cuối cùng của danh sách cho biếnCode language: Python [python]
red, blue, green = colors
5.Code language: Python [python]
red, blue, green = colors
Ở đây, một ví dụ khác:
Code language: Python [python]
colors = ['cyan', 'magenta', 'yellow', 'black'] cyan, magenta, *other = colors print[cyan] print[magenta] print[other]
Output:
Code language: Python [python]
cyan magenta ['yellow', 'black']
Ví dụ này gán các phần tử thứ nhất và thứ hai cho các biến. Nó đóng gói hai yếu tố cuối cùng trong một danh sách mới và gán danh sách mới cho biến
5.Code language: Python [python]
red, blue, green = colors
Bản tóm tắt
- Giải nén gán các phần tử của danh sách cho nhiều biến.
- Sử dụng dấu hoa thị [ *] trước một biến như *biến_name này để đóng gói các phần tử còn sót lại của danh sách vào danh sách khác.
Bạn có thấy hướng dẫn này hữu ích không?
Tôi có danh sách danh sách các bộ dữ liệu:
a = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10]]]
Làm cách nào để lập một danh sách các bộ dữ liệu:
0Code language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
Cách ngây thơ là:
1Code language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
Danh sách hiểu hoặc bất kỳ ý tưởng khác được chào đón.
Khi được hỏi ngày 5 tháng 5 năm 2018 lúc 18:53May 5, 2018 at 18:53
12
Sử dụng itertoolsitertools
demo:
2Code language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
Output:
3Code language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
Đã trả lời ngày 5 tháng 5 năm 2018 lúc 18:56May 5, 2018 at 18:56
RakeshrakeshRakesh
79,7K17 Huy hiệu vàng72 Huy hiệu bạc109 Huy hiệu đồng17 gold badges72 silver badges109 bronze badges
2
Hoạt động này được gọi là 'Flatten' trong một số ngôn ngữ khác. Trong Python, phương pháp theo dõi có thể là ngắn nhất.
4Code language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
Nó cũng hoạt động trong trường hợp danh sách cha mẹ có nhiều danh sách con.
5Code language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
Đã trả lời ngày 5 tháng 5 năm 2018 lúc 19:01May 5, 2018 at 19:01
set0gut1set0gut1set0gut1
1.5741 Huy hiệu vàng7 Huy hiệu bạc21 Huy hiệu đồng1 gold badge7 silver badges21 bronze badges
1
Bạn không muốn nối thêm, bạn muốn mở rộng. Bạn có thể sử dụng vòng lặp thực sự đơn giản
6Code language: Python [python]
red = colors[0] blue = colors[1] green = colors[2]
Đã trả lời ngày 5 tháng 5 năm 2018 lúc 18:59May 5, 2018 at 18:59
Nick Chapmannick ChapmanNick Chapman
4.20823 Huy hiệu bạc39 Huy hiệu Đồng23 silver badges39 bronze badges
1