[英]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.