python的列表切分练习题

这是我的一个粉丝问我的python练习题,说实话最近都在搞Java没有怎么搞python。不过,我思考了很长一段时间之后,参考大佬的文章把这个问题解决了。

题目要求:写一个函数实现将包含100个元素的列表随机分成12分,每份至少有2个元素
代码:

#写一个函数实现将包含100个元素的列表随机分成12分,每份至少有2个元素
import random
print("Python使我快乐!")
ls = []
for i in range(0,100):
    ls.append(i)

Length = len(ls)
print(Length)
def list_devide(lst):
    ls2 = []#定义列表ls2用来存储打乱的随机数
    while True:
        element = random.choice(lst)#随机选取列表中的元素,并将lst元素删除
        ls2.append(element)
        if element in lst:
            lst.remove(element)
        if len(lst) == 0:#直到列表lst没有元素结束循环
            break
    print((ls2))
    start_value = 0#定义初始的开始值
    end_value = 2#定义初始的结束结束值
    change_value = 3#random.randint(3,5)#生成可变随机数3,4,5中任意一个,增加切片速度
    ls3 = []
    while True:
        Element = ls2[start_value:end_value]#切片的start_value开始值和end_value结束值
        #print(Element)
        ls3.append(Element)#将每次切片的结果加入到列表ls3中
        start_value = end_value#每一次结束值就是下一次开始切片的初值
        change_value += 1#每次自增1,使切片更快
        end_value += change_value#切片结束值等于上一次结束值加上改变切片速度的值
        if len(ls3) == 12:#直到列表ls3切完,即长度达到12停止循环。
            break
    for i in range(len(ls3)):
        print("第"+str(i+1)+"列表为:{}".format(ls3[i])+",长度为:"+str(len(ls3[i])))
list_devide(ls)#调用函数

运行结果,如下图:
在这里插入图片描述
代码的解释在注释中写了,不明白的朋友可以私聊我,我们互相探讨。参考的大佬文章:菜鸟教程。如下图:
在这里插入图片描述
最后,感谢大家前来观看鄙人的文章,文中或有诸多不妥之处,还望指出和海涵。

猜你喜欢

转载自blog.csdn.net/weixin_43408020/article/details/114673519