Bạn có thể tạo một danh sách liệt kê sau đó sử dụng giảm tham gia cùng họ.
print [[n,n*n] for n in range (10)]
[[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
print reduce(lambda x1,x2:x1+x2,[[n,n*n] for n in range (10)])
[0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81]
print reduce(lambda x1,x2:x1+x2,[[n**e for e in range(1,4)]\
for n in range (1,10)])
[1, 1, 2, 4, 8, 3, 9, 27, 4, 16, 64, 5, 25, 125, 6, 36, 216, 7, 49, 343, 8, 64, 512, 9, 81, 729]
Giảm mất một biểu thức có thể gọi mà phải mất hai đối số và xử lý một chuỗi bằng cách bắt đầu với hai mục đầu tiên. Kết quả của biểu thức cuối cùng sau đó được sử dụng làm mục đầu tiên trong các cuộc gọi tiếp theo. Trong trường hợp này, mỗi danh sách được thêm một cái khác vào danh sách đầu tiên trong danh sách các danh sách và sau đó danh sách đó được trả về kết quả.
Danh sách
comprehensions ngầm gọi bản đồ với một biểu thức lambda sử dụng biến và trình tự xác định bởi "cho var trong chuỗi" biểu. Sau đây là cùng một loại điều.
map(lambda n:[n,n*n],range(1,10))
[[1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
Tôi không biết về biểu thức python tự nhiên hơn để giảm.
Bạn đang gonna được đọc, giải pháp oneliner. Cảnh báo trễ được đưa ra: P – ytpillai