Tôi nghĩ rằng việc hiểu danh sách là cách đơn giản nhất, nhưng nếu bạn không thích nó, rõ ràng không phải là cách duy nhất để có được những gì bạn mong muốn - gọi một cuộc gọi được gọi 100 lần mà không có đối số nào để tạo thành 100 các mục của danh sách mới. Ví dụ, itertools
rõ ràng có thể làm điều đó:
>>> import itertools as it
>>> lst = list(it.starmap(Object, it.repeat((), 100)))
hoặc, nếu bạn thực sự là một truyền thống, map
và apply
:
>>> lst = map(apply, 100*[Object], 100*[()])
Lưu ý rằng điều này về cơ bản là như nhau (nhỏ xíu, cả hai khái niệm và thực sự ;-) số lượng công việc nó sẽ mất nếu, thay vì cần phải được gọi mà không có đối số, Object
cần thiết để được gọi với một đối số - hoặc, giả sử, nếu Object
thực chất là một hàm chứ không phải là một loại.
Thật ngạc nhiên khi có thể mất "nhiều như một danh sách hiểu" để thực hiện tác vụ này, bạn dường như nghĩ rằng mọi ngôn ngữ cần đặc biệt cần phải thực hiện "cuộc gọi đến một loại, không có đối số" các loại cuộc gọi đến trên các cuộc gọi, nhưng tôi không thấy những điều rất quan trọng và đặc biệt về trường hợp rất cụ thể này, để đảm bảo xử lý nó khác với tất cả những người khác; và, kết quả là, tôi khá hạnh phúc, cá nhân, rằng Python không chỉ dùng một trường hợp này để xử lý kỳ dị và kỳ lạ, nhưng xử lý như thường lệ và dễ dàng như bất kỳ trường hợp sử dụng tương tự nào khác! -)
Nguồn
2009-11-27 06:43:28
+1. Tôi sẽ đề nghị xrange thay vì phạm vi. – orip
Điểm công bằng; Tôi đã được mã hóa trong Python 3 gần đây. :) –
@orip Trong Python 3, 'range()' làm những gì 'xrange()' được sử dụng để làm và 'xrange()' không tồn tại. Nếu bạn muốn viết mã sẽ chạy trên cả Python 2 và Python 3, bạn không thể sử dụng 'xrange()'. –