2013-08-02 2 views
0

У меня есть динамическая группа: например, у нас есть список из 20 элементов в это время .... Я хочу сделать этот список в 4 индивидуальный список с 5 пунктов что-то подобное в моей голове ..группировка списка в отдельных списках в базовом списке или полностью индивидуальная в майа-питоне

a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 
z = len(a)/4 
b = [] 
for i in range(z) 

и после того, как я не знаю, что я должен делать .......

я сделал что-то вроде это, но это совершенно неправильно:

for i in range(len(a)): 
    for j in range(z): 
     b.append(a) 

это мои коды:

import maya.cmds as cm 
import random as random 
myList = cm.ls(sl = True) 
random.shuffle(myList) 
b = [myList[i:i+5] for i in range(0, len(myList), 5)] 
for i in b: 
    print str(i)+".v" 

результат является:

[u'curve13', u'curve26', u'curve5', u'curve40', u'curve17'].v 

, но мне нужно:

[u'curve13.v', u'curve26.v', u'curve5.v', u'curve40.v', u'curve17.v'].v 
+0

Если вы печатаете '' i' и j' вы можете, вероятно, увидеть почему это не работает. И, возможно, исправьте это. Это, возможно, не было бы питоновым, но, тем не менее, хорошим упражнением. – keyser

+0

_ "Я хочу сделать этот список из 4-х индивидуального списка с 5 элементами" _. Пожалуйста, будьте более конкретными. Какие элементы входят в списки? Покажите нам, какой результат вы ожидаете. – Kevin

+0

, соответственно ... –

ответ

0

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

>>> a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 
>>> b = [a[i:i+5] for i in range(0, len(a), 5)] 
>>> b 
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]] 
>>> b[2][3] 
14 

UPDATE ответ на комментарий

пункты доступа

>>> for item in b[2]: print '{}.v'.format(item) 
... 
11.v 
12.v 
13.v 
14.v 
15.v 

UPDATE2

>>> a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 
>>> n = len(a) 
>>> b = [a[n*i/4:n*(i+1)/4] for i in range(4)] 
>>> c, d, e, f = b 
>>> c 
[1, 2, 3, 4, 5] 
>>> d 
[6, 7, 8, 9, 10] 
>>> e 
[11, 12, 13, 14, 15] 
>>> f 
[16, 17, 18, 19, 20] 
+0

Не могли бы вы объяснить мне, что делает эта часть? для i в диапазоне (0, len (a), 5) что именно (0, len (a), 5) –

+0

и как я могу сделать этот список следующим образом: b = [1,2,3,4,5 ], c = [6,7,8,9,10] и т. д. –

+0

@iran, In 'range (0, 20, 5)'. '0' - начальное значение,' 20' - стоп-значение (исключение). '5' - это шаг. 'range (0, 20, 5)' дает '[0, 5, 10, 15]'. – falsetru