Форум сайта python.su
Как получить такой список
(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)
Офлайн
857
>>> 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)
Офлайн
253
Это для списка
r4=range(4);[i for i in r4 for j in r4]
Отредактировано (Дек. 16, 2011 18:02:37)
Офлайн
doza_andСупер! Нигде пока не видел, что можно добавить (j) не используемую переменную и получить такой эффект. Спасибо!!
Это для спискаr4=range(4);[i for i in r4 for j in r4]
Офлайн
0
r4=range(4);
Еще бы объяснили почему так происходит?
Офлайн
857
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)
Офлайн
7
[k//4 for k in range(12)]
Офлайн