簡體   English   中英

列出有效和非空的zip對象會打印空列表

[英]Listing a valid and non-empty zip object prints empty list

zip_obj是一個包含17292個元組的zip對象。 一件奇怪的事情正在發生:

sorted_zip_obj = sorted(zip_obj, key=lambda x: -abs(x[1]))
print(f'{len(list(zip_obj))} {len(sorted_zip_obj)}')

打印0 17292 怎么會這樣呢? 為什么打印的第一個數字是0而不是17292?

zip_obj是我從其他地方獲取的東西,不幸的是無法共享,並且無法在我手動創建的小型zip對象中重現此行為。

如果您使用的是python 3,則zip_obj可能是一個懶惰的zip對象,您只能對其進行一次迭代。 對它進行排序時,您已經筋疲力盡了。

嘗試將其實現為這樣的數據結構:

zip_obj = tuple(zip_obj) # you can use `list` if you prefer
sorted_zip_obj = sorted(zip_obj, key=lambda x: -abs(x[1]))
print(f'{len(zip_obj)} {len(sorted_zip_obj)}') # removed the redundant `list`

在使用它之前。

zip文檔中:

創建一個迭代器,以聚合每個可迭代對象中的元素。 返回一個元組的迭代器,其中第i個元組包含每個參數序列或可迭代對象中的第i個元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM