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)

  • 相关阅读:
    8086标志
    微内核
    枚举算法
    ajax
    面向对象技术概述
    ajax
    存储技术
    自然数组排列
    将搜索二叉树转换成双向链表
    在单链表中删除指定值的节点
  • 原文地址:https://www.cnblogs.com/dreamer-fish/p/5391834.html
Copyright © 2011-2022 走看看