python 进行数据列表按比例随机拆分 random split list

import random


# 数据集拆分函数: 将列表 full_list按比例ratio(随机)划分为3个子列表sublist_1、sublist_2、sublist_3

def data_split(full_list, ratio, shuffle=False):
    n_total = len(full_list)
    offset0 = int(n_total * ratio[0])
    offset1 = int(n_total * ratio[1])
    offset2 = int(n_total * ratio[2])

    if n_total == 0: # 列表为空的情况
        return []

    if offset0 + offset1 + offset2 > n_total: # 错误切分条件
        print("错误切分比例:因为:", ratio[0], "+", ratio[1], "+", ratio[2], "=", ratio[0] + ratio[1] + ratio[2], ">1")
        return 0

    if offset0 + offset1 + offset2 <= n_total:# 切分
        random.shuffle(full_list)
    sublist_1 = full_list[:offset0]
    sublist_2 = full_list[offset0:offset0 + offset1]
    sublist_3 = full_list[offset0 + offset1:]
    return sublist_1, sublist_2, sublist_3


if __name__ == "__main__":
    number = int(input("请输入要生成的列表内的随机数个数:"))
    data = list(range(number))
    ratio = []
    ratio1, ratio2, ratio3 = eval(input("请输入切分比列,用逗号隔开:"))
    ratio.append(ratio1)
    ratio.append(ratio2)
    ratio.append(ratio3)

    # print(ratio)
    sub_data1, sub_data2, sub_data3 = data_split(data, ratio, shuffle=True)
    print(sub_data1, ",", sub_data2, ",", sub_data3) # 打印结果


正确输入切分比例 结果:

错误输入切分比例 结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值