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?
8
A
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
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
Xin lỗi ~ hiểu sai. Sẽ cập nhật nó ngay lập tức. – Sheng