2013-06-08 6 views
3

У меня есть список что-то вроде mylist = [1,2,3,4,5,6] теперь мне нужно перебрать этот список и создать 3 новые списки, как этотпитона создать несколько списков из одного списка

new1 = [1,4] 
new2 = [2,5] 
new3 = [3,6] 

Что это самый простой способ сделать это?

+5

Какой критерий у вас есть для создания новые списки? Вы хотите разбить оригинал на три равные части? Разделить оригинал каждые 2 предмета? Что произойдет, если у вас есть 8 элементов в 'mylist'? – ASGM

+0

Является ли количество элементов в списке orignal произвольным? – Zacrath

+0

В главном списке могут быть неограниченные предметы. Необходимо создать только 3 новых списка. Первый и четвертый элементы должны быть в одном списке. Также второй и пятый, третий и шестой, как на примере. Итак, первый список будет выглядеть так: 'new1 = [1,4,7 ...] – Goran

ответ

9

Использование нарезка:

>>> mylist = [1,2,3,4,5,6] 
>>> mylist[::3] 
[1, 4] 
>>> mylist[1::3] 
[2, 5] 
>>> mylist[2::3] 
[3, 6] 

>>> lis = range(1,21) 
>>> new1, new2, new3 = [lis[i::3] for i in xrange(3)] 
>>> new1 
[1, 4, 7, 10, 13, 16, 19] 
>>> new2 
[2, 5, 8, 11, 14, 17, 20] 
>>> new3 
[3, 6, 9, 12, 15, 18] 

Хорошо читать в случае, если вы новичок в нарезку: Explain Python's slice notation

+0

работает ли таким же образом, если в главном списке есть 1000 элементов? – Goran

+1

@Goran это не так. Но если вы этого хотите, вам нужно быть более конкретным в своем вопросе о поведении, которое вы ожидаете. – ASGM

+0

@Goran Сколько 'new_list' вы пытаетесь создать? –

2

Может быть, вы должны использовать numpy

>>> import numpy as np 
>>> arr = np.array([1,2,3,4,5,6]) 
>>> arr.reshape((arr.size//3, 3)).T 
array([[1, 4], 
     [2, 5], 
     [3, 6]]) 
Смежные вопросы