Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 8, 2011 16:06:22

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбить список

Подскажите пожалуйста, как разбить список по такому алгоритму:

есть:
[1,2,3,…,n,
1,2,3,…,n,
1,2,3,…,n,
…,
m]

надо:
[,,,…,n]

PS: пока додумался как сделать:
[,,,…,m]
zip(**n)



Отредактировано (Окт. 8, 2011 16:10:37)

Офлайн

#2 Окт. 8, 2011 23:55:04

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Разбить список

Не совсем понятно что вы хотите. Можно пример?
Может так: zip(*zip(**n)) ?



Офлайн

#3 Окт. 9, 2011 00:12:51

usmix
От:
Зарегистрирован: 2011-07-08
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбить список

Пример возможной реализации

# -*- encoding: cp1251 -*-

if __name__ == '__main__':
n = 5 # Столбцы
m = 3 # Строки
inlist = range(1, n + 1) * m # Генерируем входной список (для примера)
result = [[i for j in inlist if i == j] for i in list(set(inlist))]

print 'Входной список:', inlist
print 'Результат:', result
Результат:

Входной список: [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
Результат: [[1, 1, 1], [2, 2, 2], [3, 3, 3], [4, 4, 4], [5, 5, 5]]



Офлайн

#4 Окт. 10, 2011 00:52:18

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Разбить список

Или так еще: [lst for i in range(n)]



Офлайн

#5 Окт. 10, 2011 15:13:16

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбить список

Ребят, спасибо! "zip(*zip(**n))" самое оно )



Офлайн

#6 Окт. 11, 2011 16:06:34

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Разбить список

На самом деле если список большой, то может быть существенная разница в производительности между вариантами. В варианте *n есть большая избыточность, которая обязательно проявится при больших n или m. Я, собственно, поэтому второй вариант запостил. Он должен по идее работать быстрее.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version