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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.