Hãy bước thông qua mã này, chúng ta sẽ ?:
x = []
: Tạo một danh sách trống gọi x
for i in range(3)
: lặp lại các đoạn mã sau ba lần:
x = [x + x]
gán giá trị của x
với giá trị hiện tại của x
, cộng với giá trị hiện tại của x
và quấn rằng trong một danh sách.
Về cơ bản, những gì đang xảy ra mỗi lần lặp là danh sách của bạn được lồng bởi một cấp, và danh sách bên trong danh sách của bạn hiện đang trở thành danh sách phụ của danh sách lồng nhau.
Trong thuật ngữ của giáo dân, giải thích đơn giản nhất là - Trên mỗi lần lặp của vòng lặp for, giá trị của biến x được gán lại cho giá trị của hai lồng nhau, cũng có thể chứa hai danh sách lồng nhau khác, bên trong một danh sách.
Dưới đây là một minh chứng cho thấy giá trị của x trên mỗi lần lặp của for
-loop:
>>> # x is empty
>>> x = []
>>>
>>> # 1st iteration
>>> x = [x + x]
>>> # x
>>> x
[[]] # your list is nested by one level
>>>
>>> # 2nd iteration
>>> x = [x + x]
>>> # x
>>> x
[[[], []]] # your list is nested by three levels
>>> # 3rd iteration
>>> x = [x + x]
>>> # x
>>> x
[[[[], []], [[], []]]] # your list is nested by four levels
>>>
Nếu hình minh họa ở trên là quá đông đúc, đây là một ngắn một:
First iteration
Value of x: [[]]
Second iteration
Value of x: [[[], []]]
Third iteration
Value of x: [[[[], []], [[], []]]]
Tôi cũng tìm thấy việc tạo cấu trúc cây giống như từ danh sách lồng nhau, giúp hiểu điều gì đang xảy ra tốt hơn:
[ # 1st level
[ # second level
[ # third level
[], # fourth level
[]
],
[
[],
[] # fourth level
] # third level
] # second level
] # 1st level
in x vòng lặp để biết lý do tại sao –
Bạn có muốn đổi tên câu hỏi của mình để câu hỏi cụ thể hơn không? Tôi nghĩ rằng nó sẽ giúp người dùng SO đồng nghiệp đang tìm kiếm cùng một vấn đề. – perlyking