對乙個list進行分組,要求控制每組中的元素個數:
1.使用切片分組:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1] #lst可為空,最後返回值也為空
num=3 #
定義每組包含的元素個數
for i in
range(0,len(lst),num):
print lst[i:i+num]
返回:[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[8, 7, 6]
[5, 4, 3]
[2, 1]
2.使用迭代方式:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1] #lst可為空
num=3 #
只要不為0即可,大於lst長度也可以
deflstg(num,lst):
for i in
range(0,len(lst),num):
yield lst[i:i+num]
lstgs =lstg(num,lst)
for i in
lstgs:
i返回:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[8, 7, 6]
[5, 4, 3]
[2, 1]
原始笨方法:
#-*- coding: utf-8 -*-
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
num=4
deflstg(num,lst):
#定義每段的個數num
l =len(lst)
#取分成幾組
g = l/num
#判斷是否有剩餘的數
last = l%num
lstn =
for i in
range(g):
i=i+1n=i*num
m=n-num
if last <>0:
return
lstn
for i in
lstg(num,lst):
print i
print divmod(13,3) #返回(4, 1)
陣列(list)分組 分段
對乙個list進行分組,要求控制每組中的元素個數 1.使用切片分組 lst 1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1 lst可為空,最後返回值也為空 num 3 定義每組包含的元素個數 for i in range 0,len lst num print lst i i n...
陣列分組問題
這個問題是這個樣子滴 有乙個無序 元素個數為n n為偶數 的正整數陣列arr,要求 如何能把這個陣列分割為元素個數為n 2的兩個子陣列,並使兩個子陣列的的和最接近。我的思路是 1 把陣列拆成2個子陣列a和b 2 用a中的每個元素與b中的每個元素比較,陣列值之和的絕對值小於原來的值就交換 其實並不難,...
演算法題 陣列分段
清潔工 假設有m個房間,清潔每個房間耗時用乙個陣列表示,10 20 30 40 50 60 70 80 90,安排n個清潔工,將連續的房間分成n份,每部分耗時求和,其最大值為此種分法的總耗時。求最快的耗時是多少。例如3個清潔工的話,10 20 30 40 50 60 70 80 90,此時是最快的,...