Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 16, 2011 11:57:44

pyhappy
От: Moscow/Russia
Зарегистрирован: 2011-11-13
Сообщения: 22
Репутация: +  0  -
Профиль  

Как получить такой список

Как получить такой список
(0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2)

я сделал следующий код, но не думаю что он оптимальный

rows=3
columns=4
n_col=[(x,)*columns for x in range(0,rows)] # готовим массив новых индексов колонок
n_col=tuple([ n_col[i][j] for i in range(0,rows) for j in range(0,columns)]) #обработанный массив
print(n_col)

Офлайн

#2 Дек. 16, 2011 12:07:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Как получить такой список

>>> sum(((i,) * 4 for i in range(3)), ())
(0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2)
>>>



Отредактировано (Дек. 16, 2011 12:08:55)

Офлайн

#3 Дек. 16, 2011 12:55:13

pyhappy
От: Moscow/Russia
Зарегистрирован: 2011-11-13
Сообщения: 22
Репутация: +  0  -
Профиль  

Как получить такой список

занес в свою базу знаний, спасибо!

Офлайн

#4 Дек. 16, 2011 17:59:20

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Как получить такой список

Это для списка

r4=range(4);[i for i in r4 for j in r4]



Отредактировано (Дек. 16, 2011 18:02:37)

Офлайн

#5 Дек. 16, 2011 19:51:30

pyhappy
От: Moscow/Russia
Зарегистрирован: 2011-11-13
Сообщения: 22
Репутация: +  0  -
Профиль  

Как получить такой список

doza_and
Это для списка
r4=range(4);[i for i in r4 for j in r4]
Супер! Нигде пока не видел, что можно добавить (j) не используемую переменную и получить такой эффект. Спасибо!!

Офлайн

#6 Дек. 16, 2011 21:54:25

Malinaizer
От:
Зарегистрирован: 2009-03-28
Сообщения: 133
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить такой список

r4=range(4);
Еще бы объяснили почему так происходит?



Офлайн

#7 Дек. 16, 2011 23:23:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Как получить такой список

doza_and
Это для списка
>>> r4=range(4);[i for i in r4 for j in r4]
[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3]
>>> r4=range(3);[i for i in r4 for j in r4]
[0, 0, 0, 1, 1, 1, 2, 2, 2]
>>>
pyhappy
Как получить такой список
(0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2)
>>> sum(([i] * 4 for i in range(3)), [])
[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]
>>>
>>> lst = sum(([i] * 4 for i in range(3)), [])
>>> lst[0], lst[4] = 5, 6
>>> lst
[5, 0, 0, 0, 6, 1, 1, 1, 2, 2, 2, 2]
>>>



Отредактировано (Дек. 16, 2011 23:30:50)

Офлайн

#8 Дек. 21, 2011 15:51:07

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Как получить такой список

[k//4 for k in range(12)]



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version