zoukankan      html  css  js  c++  java
  • python-将一个列表切分成多个小列表

    list是python中较为常见的数据类型,它是一个可迭代对象,迭代是什么?简单的可以理解成:一个可以被for循环遍历的对象

    今天拿到一个类似这样的list

    list_info = ['name zhangsan','age 10','sex man','name lisi','age 11','sex women']

    其实说白了就是两个人的个人信息,字段都一样,但是在一个共同的列表中,没办法区分,首先需要将这个大列表分成2个(这里人数是不一定的,分列表是按照每个列表固定的长度)的小列表

    def list_of_groups(list_info, per_list_len):
        '''
        :param list_info:   列表
        :param per_list_len:  每个小列表的长度
        :return:
        '''
        list_of_group = zip(*(iter(list_info),) *per_list_len) 
        end_list = [list(i) for i in list_of_group] # i is a tuple
        count = len(list_info) % per_list_len
        end_list.append(list_info[-count:]) if count !=0 else end_list
        return end_list
    
    if __name__ == '__main__':
        list_info = ['name zhangsan', 'age 10', 'sex man', 'name lisi', 'age 11', 'sex women']
        ret = list_of_groups(list_info,3)
        print(ret)

    以上便是这个函数执行的结果,成功将一个大的无规则的列表按照一定规则做了处理,还可以将上述小列表转换成字典,更加直观,通过键值对的方式获取数据

        list_dict = []
        for item in ret:
            data = {}
            data['name'] = item[0].split(' ')[1]
            data['age'] = item[1].split(' ')[1]
            data['sex'] = item[2].split(' ')[1]
            list_dict.append(data)
        print(list_dict)

    两种更加可视化的方法,任君选择吧

  • 相关阅读:
    node.js ---path模块
    es6箭头函数this问题
    Codeforces Round #576 (Div. 2) | CF1199 补题
    Hungary
    CF 1196D2 RGB Substring (hard version) --- 前缀和 + 思维
    康托展开
    POJ1821 Fence --- 单调队列 + DP
    素数筛
    自动化接口面试遇到的问题
    linux遇到的面试问题
  • 原文地址:https://www.cnblogs.com/lutt/p/12037454.html
Copyright © 2011-2022 走看看