Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 6, 2013 06:51:02

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сегодня на манеже кортеж в кортеже

# -*- coding:utf-8 -*-
mycortege = (('а','я',('е','э','ё')),'б','в','г','д','з',('и','й'))
#1
def flatten(iterable):
    res = []
    def loop(tpl):
        for i in tpl:
            if isinstance(i, tuple):
                loop(i)
            else:
                res.append(i)
    loop(iterable)
    return res
print flatten(mycortege)
#2
from compiler.ast import flatten as flt
print flt(mycortege)
#3
def fltn(iterable):
    for i in iterable:
        if isinstance(i, tuple):
            for x in fltn(i):
                yield x
        else:
            yield i
print list(fltn(mycortege))
#4
cortege = ((u'а',u'я'),u'б',u'в',u'г',u'д',(u'е',u'э',u'ё'),u'з',(u'и',u'й'))
for x in sum(map(list, cortege), []):
    print x
#5
from operator import add
cortege = ((u'а',u'я'),u'б',u'в',u'г',u'д',(u'е',u'э',u'ё'),u'з',(u'и',u'й'))
for x in reduce(add, map(list, cortege)):
    print x



Офлайн

#2 Июнь 6, 2013 08:15:10

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Сегодня на манеже кортеж в кортеже

import re
mycortege = (('а','я',('е','э','ё')),'б','в','г','д','з',('и','й'))
print(re.findall('\w', str(mycortege))
и ещё 100 относительно честных способов)

Офлайн

#3 Июнь 6, 2013 09:06:40

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сегодня на манеже кортеж в кортеже

Shaman,

['x', 'd', '0', 'x', 'b', '0', 'x', 'd', '1', 'x', '8', 'f', 'x', 'd', '0', 'x', 'b', '5', 'x', 'd', '1', 'x', '8', 'd', 'x', 'd', '1', 'x', '9', '1', 'x', 'd', '0', 'x', 'b', '1', 'x', 'd', '0', 'x', 'b', '2', 'x', 'd', '0', 'x', 'b', '3', 'x', 'd', '0', 'x', 'b', '4', 'x', 'd', '0', 'x', 'b', '7', 'x', 'd', '0', 'x', 'b', '8', 'x', 'd', '0', 'x', 'b', '9']



Офлайн

#4 Июнь 6, 2013 09:50:27

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Сегодня на манеже кортеж в кортеже

re.findall(r'\w|(?:\\x[abcdef\d]{2})', str(mycortege), re.I)

Офлайн

#5 Июнь 6, 2013 10:15:02

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сегодня на манеже кортеж в кортеже

for x in re.findall(r'\w|(?:\\x[abcdef\d]{2})', str(mycortege), re.I):
    print x

\xd0
\xb0
\xd1
\x8f
\xd0
\xb5
\xd1
\x8d



Офлайн

#6 Июнь 6, 2013 10:50:14

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Сегодня на манеже кортеж в кортеже

однако

[eval('"%s"' % i) for i in re.findall(r'\w|(?:\\x[abcdef\d]{2})', str(mycortege), re.I)]

Офлайн

#7 Июнь 6, 2013 11:19:01

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сегодня на манеже кортеж в кортеже

import re
mycortege = (('а','я',('е','э','ё')),'б','в','г','д','з',('и','й'))
for x in [eval('"%s"' % i) for i in re.findall(r'\w|(?:\\x[abcdef\d]{2})', str(mycortege), re.I)]:
    print x










import re
mycortege = ((u'а',u'я',(u'е',u'э',u'ё')),u'б',u'в',u'г',u'д',u'з',(u'и',u'й'))
for x in [eval('"%s"' % i) for i in re.findall(r'\w|(?:\\x[abcdef\d]{2})', str(mycortege), re.I)]:
    print x
u
u
0
4
3
0
u
u
0
4
4
f
u
u
0
4
3
5
u
u
0
4
4
d
u
u
0
4
5
1
u
u
0
4
3
1
u
u
0
4
3
2
u
u
0
4
3
3
u
u
0
4
3
4
u
u
0
4
3
7
u
u
0
4
3
8
u
u
0
4
3
9



Офлайн

#8 Июнь 6, 2013 11:23:58

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Сегодня на манеже кортеж в кортеже

Логично. Давайте я не буду отмазываться разговорами об особых случаях и сразу скажу что у меня 3-й питон?)

Отредактировано Shaman (Июнь 6, 2013 11:29:56)

Офлайн

#9 Июнь 6, 2013 12:27:43

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Сегодня на манеже кортеж в кортеже

чето не пойму, у него в кортеже есть символы либо кортежи с символами, надо перебрать по-порядку все символы? Чего тогда мудрить?

for i in tuples_or_str_in_tuple:
    if isinstance(i, tuple):
        for s in i:
            что-то делаем
    else:
        что-то делаем

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version