LINUX.ORG.RU

python


0

0
Доброе утро. Изучаю вот питон. Не подскажете как можно определить является ли переменная списком, а не строка или что-либо еще?
Или это знание для следующего мне не нужно?Вот например есть список, члены которого хочу вывести на экран:
[['a', ['bb', ['abc', ['d'], 'ee'], 'f'], 'g', 'df']]

Я же правильно понимаю:
def print (list):
____for x in list:
________if isList(list):print(x)
________else print x
____return

Или как-то иначе это все делается?)



anonymous
/s/print/print_list
anonymous
()
Python 2.4.4 (#2, Apr 15 2008, 23:43:20)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import types
>>> isinstance([1], types.ListType)
True
>>> isinstance(1, types.ListType)
False
>>>
tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner
Не совсем так как хотелось бы) Просто надо отдельно каждый элемент $ python test.py a bb abc d ee f g df

try: for x in iter(l): print x except TypeError: print x

Спасибо. Но почему-то с isinstance мне вариант нравится больше...Хотя наверное я чего-то не понимаю)

anonymous
()
Ответ на: комментарий от tailgunner
Просто print не совсем так как хотелось бы печатает) Просто надо отдельно каждый элемент вывести
$ python test.py 
a
bb
abc
d
ee
f
g
df

try:
    for x in iter(l):
        print x
except TypeError:
    print x 

Спасибо. Но почему-то с isinstance мне вариант нравится больше...Хотя наверное я чего-то не понимаю)
anonymous
()
Ответ на: комментарий от anonymous
isinstance будет работать только с list-ами, iter -- с любыми объектами, поддерживающий соотв. протокол (tuple, generators, etc).
phoenix ★★★★
()
Ответ на: комментарий от anonymous
> Не совсем так как хотелось бы)

Это ответ на заданный вопрос.

> Но почему-то с isinstance мне вариант нравится больше

Вариант с isinstance - это то, о чем ты спрашивал. iter(x) - это проверка на итерабельность, вещь полезная, но тип объекта не определяет.

>>> iter((1,2,3))
<tupleiterator object at 0xb7d263ac>
>>> iter("123")
<iterator object at 0xb7d263ec>
tailgunner ★★★★★
()
Ответ на: комментарий от phoenix
phoenix, tailgunner спасибо еще раз) Осознал.
anonymous
()
docs.python.org/lib/module-pprint.html
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.