Найти - Пользователи
Полная версия: Разбить список
Начало » Python для новичков » Разбить список
1
r3m1x
Подскажите пожалуйста, как разбить список по такому алгоритму:

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

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

PS: пока додумался как сделать:
[,,,…,m]
zip(**n)
Ed
Не совсем понятно что вы хотите. Можно пример?
Может так: zip(*zip(**n)) ?
usmix
Пример возможной реализации

# -*- 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]]
Ed
Или так еще: [lst for i in range(n)]
r3m1x
Ребят, спасибо! "zip(*zip(**n))" самое оно )
Ed
На самом деле если список большой, то может быть существенная разница в производительности между вариантами. В варианте *n есть большая избыточность, которая обязательно проявится при больших n или m. Я, собственно, поэтому второй вариант запостил. Он должен по идее работать быстрее.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB