Vì vậy, tôi đã tự hỏi làm thế nào để tạo một danh sách các danh sách trống tốt nhất:
[[],[],[]...]
Do cách Python hoạt động với danh sách trong bộ nhớ, điều này không hoạt động:
[[]]*n
Điều này tạo ra [[],[],...]nhưng mỗi phần tử là cùng một danh sách:
d = [[]]*n
d[0].append(1)
#[[1],[1],...]
Một cái gì đó giống như một công việc hiểu danh sách:
d = [[] for x in xrange(0,n)]
Nhưng điều này sử dụng máy ảo Python để lặp lại. Có cách nào để sử dụng một vòng lặp ngụ ý (lợi dụng nó được viết bằng C) không?
d = []
map(lambda n: d.append([]),xrange(0,10))
Điều này thực sự chậm hơn. :(
timeit, bạn đã học được gì?
map(lambda x: [], xrange(n))chậm hơn so với việc hiểu danh sách.
d = [[] for x in xrange(0,n)]. Bạn phải lặp lại một cách rõ ràng bằng Python hoặc gọi một hàm Python / lambda lặp đi lặp lại (sẽ chậm hơn). Nhưng vẫn hy vọng ai đó sẽ đăng một cái gì đó cho thấy tôi sai :).