我有一个列表我想拆分或分成多个子列表。如果它按顺序排列会很好,但它并不是必须的。如果可能的话,我想把它分成3-5个列表。目前我使用以下代码,但我想知道是否有更好的方法。
@Transactional
该列表将是随机长度。有时它可以是另外两次,它可以是103个元素(w /余数)。我知道还有其他帖子,但我还没有找到一个好的答案。希望这次改变一下......任何提示都会非常感激!
答案 0 :(得分:1)
不确定对你来说什么意味着更好的方式,但仍然是我的镜头:
import random
def split(data_list):
new_list = []
while len(data_list) != 0:
add = random.randint(3,5)
separed_list = []
for i in xrange(add):
if len(data_list):
separed_list.append(data_list.pop(0))
new_list.append(separed_list)
print(new_list)
split(['a', 'b', 'c', 'd', 'e', 'f', 'j']);
答案 1 :(得分:0)
这是一种方式:
import math
def create_sublist(data_list, num_sublists):
sublist_length = math.ceil(len(data_list)/num_sublists)
list_of_sublists = []
while data_list != []:
sublist = []
for i in range(min(len(data_list), sublist_length)):
sublist.append(data_list.pop(0))
list_of_sublists.append(sublist)
print(list_of_sublists)
create_sublist(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'], 3)
>>> [['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j']]