Python知道一種稱為“generators”的數據類型,這種數據類型在被詢問時會生成值(類似于迭代器)。通常情況下,擁有一個生成器要比預先生成一個列表便宜得多。一個例子是zip()函數。它不返回元組列表,而是返回一個生成器,該生成器依次返回一個元組和另一個元組: zip([1,2,3],[4,5,6])<zip object at 0x7f7955c6dd40> 如果在這樣一個生成器上迭代,它將一個接一個地生成一個值,因此在這種情況下,它的行為類似于列表: for q in zip([1,2,3],[4,5,6]): print(q)(1, 4)(2, 5)(3, 6) 但在其他情況下,它的行為與列表不同,例如,如果要求它提供結果的長度。發電機(通常)事先不知道: len(zip([1,2,3],[4,5,6]))Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: object of type 'zip' has no len() 這主要是為了在執行過程中節省時間,稱為延遲評估。了解有關發電機的更多信息。 在您的情況下,您可以通過顯式調用list(...)從生成器中構造一個真正的列表來跳過性能優化: r = list(zip([1,2