2013-04-08 41 views
8

Tôi có danh sách nhiều số nguyên và chuỗi ['-200', '0', '200', '400', 'xanh', '0', '0', '200', '400', ' màu vàng ',' 200 ',' 0 ',' 200 ',' 400 ',' đỏ '] Tôi đang gặp khó khăn trong việc tách danh sách thành 5 phần tử và tạo danh sách mới chỉ với 5 phần tử bên trong. Tuy nhiên, tôi không muốn 3 danh sách khác nhau, tôi chỉ muốn một danh sách thay đổi mỗi khi có 5 phần tử mới đi qua.Làm cách nào để bạn có thể tách danh sách thành từng phần tử x và thêm các phần tử x đó vào danh sách mới?

Trả lời

19

Bạn muốn một cái gì đó như:

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

print (composite_list) 

Output:

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

Ý anh là gì bởi một "mới" 5 yếu tố?

Nếu bạn muốn thêm vào danh sách này, bạn có thể làm:

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

Bạn có thể làm điều đó trong một câu duy nhất như

>>> 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))] 

Sau đó, sản lượng nên là:

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

Xin lỗi ~ hiểu sai. Sẽ cập nhật nó ngay lập tức. – Sheng

0

Tôi cảm thấy rằng bạn sẽ phải tạo 1 danh sách mới, nhưng nếu tôi hiểu chính xác, bạn muốn danh sách lồng nhau với 5 phần tử trong mỗi danh sách danh sách phụ.

Bạn có thể thử như sau:

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]) 

này sẽ bước qua danh sách của bạn đầu tiên, 'l', và nhóm 5 yếu tố lại với nhau thành một sublist ở mới. Output:

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

Hope this helps

Các vấn đề liên quan