python以特定的数字将数字列表分割成多个列表,或者多维列表

对于字符串分割,python中自带函数:split(),但对于分割数字列表,目前我尚未找到已存在的有效方法,比如以若干个0分割的数字列表:

number_list = [3.2, 2.1, 3, 0, 0, 1, 2.8, 9.6, 4.7, 0, 6.1, 0, 0, 0, 7.5, 3.6, 0.0, 5, 3.3]

我想要将number_list分割成[[3.2, 2.1, 3], [1, 2.8, 9.6, 4.7], [6.1], [7.5, 3.6], [5, 3.3]],自己写了一个函数来实现该功能:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time     : 2020/1/28 
# @Author   : Zhenglin Zhang
# @Email    : zzl1124@mail.ustc.edu.cn
# @FileName : main.py
# @Software : Python3.6;PyCharm;Windows10
# @Hardware : Intel Core i7-4712MQ
# @Version  : V1.0
# @License  : None
# @Copyright:None
# @Brief    : Split a number list in python.

def split_from_0in_numlist(number_list):
    """
    对含有0的数字列表,以0进行分割
    @number_list: 待分割原始列表
    Return 多维列表
    """
    cache_list = []  # 缓存列表,作为最终得到的多维列表的列表元素
    res_list = []  # 最终得到的多维列表
    find_zero = False  # 寻找0标志位
    for num in number_list:
        if num == 0:  # 找到0则置位
            find_zero = True
        else:
            if find_zero is True:  # 将缓存列表添加至结果
                res_list.append(cache_list)
                cache_list = []  # 缓存清空,注意不能使用cache_list.clear(),以防res_list同时被清空
            find_zero = False  # 复位
            cache_list.append(num)  # 非0则保存
    res_list.append(cache_list)  # 最后一个缓存元素添加至结果
    while [] in res_list:  # 删除空元素,避免列表首元素为空时,该空元素被保留
        res_list.remove([])
    return res_list  # 返回多维结果列表

举个栗子:

a = [3.2, 2.1, 3, 0, 0, 1, 2.8, 9.6, 4.7, 0, 6.1, 0, 0, 0, 7.5, 3.6, 0.0, 5, 3.3]
res = split_from_0in_numlist(a)
print("-------")
print(res)
print("-------")
for i in res:
    print(i)

输出为:

-------
[[3.2, 2.1, 3], [1, 2.8, 9.6, 4.7], [6.1], [7.5, 3.6], [5, 3.3]]
-------
[3.2, 2.1, 3]
[1, 2.8, 9.6, 4.7]
[6.1]
[7.5, 3.6]
[5, 3.3]

另外一个思路:先将数字列表转换成字符串,再用字符串分割函数split(),以0截取,最后再利用try转换成数字。
同时改写上述函数也可以实现分割其他类型的列表、元祖,甚至是字典等。
End

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值