Trong Python bạn có thể có nhiều trình vòng lặp trong một danh sách hiểu, như
[(x,y) for x in a for y in b]
cho một số trình tự phù hợp a và b. Tôi biết về ngữ nghĩa vòng lặp lồng nhau của việc hiểu danh sách của Python.
Câu hỏi của tôi là: một trình lặp có thể hiểu được cái kia không? Nói cách khác: Tôi có thể có một cái gì đó như thế này:
[x for x in a for a in b]
trong đó giá trị hiện tại của vòng lặp bên ngoài là vòng lặp của bên trong?
Ví dụ, nếu tôi có một danh sách lồng nhau:
a=[[1,2],[3,4]]
biểu thức hiểu danh sách sẽ là gì để đạt được kết quả này:
[1,2,3,4]
?? (Xin vui lòng chỉ liệt kê câu trả lời hiểu, vì đây là những gì tôi muốn tìm hiểu).
[x for b in a for x in b]
Điều này đã luôn luôn có lỗi về con trăn. Cú pháp này rất ngược. Dạng tổng quátx for x in y
luôn có biến trực tiếp sau for, feed cho biểu thức ở bên trái của for. Ngay khi bạn thực hiện một sự hiểu biết kép, biến lặp gần đây nhất của bạn đột nhiên rất "xa". Thật là khó xử và hoàn toàn không đọc một cách tự nhiên