2013-04-08 14 views
8

Birden çok tamsayı ve dizgilerim var ['-200', '0', '200', '400', 'yeşil', '0', '0', '200', '400', ' sarı ',' 200 ',' 0 ',' 200 ',' 400 ',' red '] Listeyi her 5 elementten ayırmakta zorlanıyorum ve içinde sadece 5 element bulunan yeni bir liste yaratıyorum. Ancak, ben 3 farklı liste istemiyorum, sadece yeni bir 5 elementin geçtiği her zaman değişen bir tane istiyorum.Her x öğesinin bir listesini nasıl bölebilir ve bu x öğelerini yeni bir listeye nasıl ekleyebilirsiniz?

cevap

19

Sen gibi bir şey istiyorum:

composite_list = [my_list[x:x+5] for x in range(0, len(my_list),5)] 

print (composite_list) 

Çıktı:

[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']] 

bir "yeni" 5 elementten ne anlama geliyor? Sonra çıktı olmalıdır

composite_list.append(['200', '200', '200', '400', 'bluellow']) 
1

Sen

>>> import math 
>>> s = ['-200', ' 0', ' 200', ' 400', ' green', '0', '0', '200', '400', ' yellow', '200', '0', '200', '400', ' red'] 
>>> [s[5*i:5*i+5] for i in range(0,math.ceil(len(s)/5))] 

gibi tek cümlede yapabileceğini: bu listeye eklemek istiyorsanız

sen yapabilirsiniz

[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']] 
+0

Maalesef ~ yanlış anlamak olur. Hemen güncelleyecektir. – Sheng

0

1 yeni liste oluşturmanız gerektiğini hissediyorum, ancak doğru anlarsam, her birinde 5 öğeli iç içe bir liste subList.

Aşağıdaki deneyebilirsiniz:

l = ['-200', ' 0', ' 200', ' 400', ' green', '0', '0', '200', '400', ' yellow', '200', '0', '200', '400', ' red'] 

new = [] 
for i in range(0, len(l), 5): 
    new.append(l[i : i+5]) 

Bu yeni bir alt liste halinde 5 element birlikteki ilk listede, 'l' ve grubun adım adım olacaktır. Çıktı:

[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']] 

Umut bu

İlgili konular