Распечатка допустимого и непустого почтового объекта печатает пустой список - PullRequest
0 голосов
/ 17 мая 2019

zip_obj - это zip-объект, содержащий 17292 кортежа.С ним происходит странная вещь:

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что я создаю вручную.

1 Ответ

1 голос
/ 17 мая 2019

Если вы на 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-й элемент из каждой последовательности аргументов или итераций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...