zoukankan      html  css  js  c++  java
  • 数组(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+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长度也可以
    def lstg(num,lst):
        for i in range(0,len(lst),num):
            yield lst[i:i+num]
    lstgs = lstg(num,lst)      
    
    for i in lstgs:
        print 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
    
    def lstg(num,lst):
    #定义每段的个数num
        l = len(lst)
        #取分成几组
        g = l/num
        #判断是否有剩余的数
        last = l%num
    
        lstn = []
        for i in range(g):
            i=i+1
            n=i*num
            m=n-num    
            lstn.append(lst[m:n])
    
        if  last <> 0:
            lstn.append(lst[-last:])
        return lstn
    
    for i in lstg(num,lst):
        print i

    print divmod(13,3) #返回(4, 1)

  • 相关阅读:
    Codeforces 749C【模拟】
    Codeforces 358D【DP】
    Lightoj1122 【数位DP】
    Codeforces 744C【DFS】
    大晚上就是想说说话
    HDU5997 【线段树】
    codeforces743D 【DFS】
    lightoj 1422【区间DP·分类区间首元素的情况】
    lightoj 1125【背包·从n个选m个】
    Lightoj 1147【DP】
  • 原文地址:https://www.cnblogs.com/dreamer-fish/p/5391834.html
Copyright © 2011-2022 走看看