Уведомления

Группа в Telegram: @pythonsu

#1 Март 17, 2008 22:40:14

pythboa
От:
Зарегистрирован: 2008-03-17
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод каждого элемента списка, кортежа с новой строки

Когда пользуешься функциями вроде dir(), locals(), sys.path и информации выводится много, бывает нагляднее, чтобы каждый элемент выводился с новой строки, а не одной сплошной. Как это можно сделать?



Офлайн

#2 Март 17, 2008 22:48:32

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод каждого элемента списка, кортежа с новой строки

Тока это в голову приходит =)

for x in locals().copy():
print x



Отредактировано (Март 17, 2008 22:49:19)

Офлайн

#3 Март 17, 2008 22:58:11

pythboa
От:
Зарегистрирован: 2008-03-17
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод каждого элемента списка, кортежа с новой строки

Получилось, спасибо! А одной строкой не получится?



Офлайн

#4 Март 17, 2008 23:07:46

pythboa
От:
Зарегистрирован: 2008-03-17
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод каждого элемента списка, кортежа с новой строки

О, и одной строкой получилось:
for x in locals(): print x
Меня просто .copy() смутило, но это чтобы не внести изменений ненароком, а аккуратно можно и без .copy(), да?



Офлайн

#5 Март 17, 2008 23:50:51

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод каждого элемента списка, кортежа с новой строки

С dir() и sys.path прокатит и без copy.
А вот с locals() - на моем питоне (2.5.1) - он ругается: “RuntimeError: dictionary changed size during iteration”



Офлайн

#6 Март 18, 2008 00:36:19

pythboa
От:
Зарегистрирован: 2008-03-17
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод каждого элемента списка, кортежа с новой строки

Мне такой ошибки не даёт (винда, интерактив):
sys.version
2.5 (r25:51908, Sep 19 2006, 09:52:17)

dictionary changed size during iteration – от самой команды меняться ему вроде не с чего, может словарь locals() меняет что-то другое, да так быстро, что не успевает пройти цикл print по всем элементам словаря? (просто гадаю)


for x in __builtins__.__dict__: print x
- пример полезости построчного вывода :) иначе завалило бы.

# поподробнее: ключи + значения
for x in __builtins__.__dict__.items(): print x

Вообще можно модуль такой себе представить: вызываешь с именем объекта, он создает текущую копию, идентифицирует его и предлагает доступные опции отображения; для словарей, списков и т.д. они будут разные. Напр., locals(): вам построчно или одной строкой? А по имени отсортировать? Экспортируемые скрыть нафиг? и т.д. Может даже есть уже где-нибудь.



Отредактировано (Март 18, 2008 00:41:48)

Офлайн

#7 Март 18, 2008 00:46:59

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Вывод каждого элемента списка, кортежа с новой строки

Ребята, вы видели модуль pprint?

from pprint import pprint
pprint(dir(), width=1)

И так далее…



Офлайн

#8 Март 18, 2008 00:50:58

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод каждого элемента списка, кортежа с новой строки

Андрей Светлов
Ребята, вы видели модуль pprint?
Черт =)



Офлайн

#9 Март 18, 2008 01:33:19

pythboa
От:
Зарегистрирован: 2008-03-17
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод каждого элемента списка, кортежа с новой строки

Спасибо за pprint, хотя не хватает сортировки по имени. Чтобы содержимое любого списка/кортежа/словаря можно было быстро вывести построчно, по алфавиту и без гемора. Есть ли такой модуль?



Офлайн

#10 Март 18, 2008 03:10:21

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод каждого элемента списка, кортежа с новой строки

PPRINT:
Changed in version 2.5: Dictionaries are sorted by key before the display is computed; before 2.5, a dictionary was sorted only if its display required more than one line, although that wasn't documented.
А вот списки наверное самому придется сортировать



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version