python 将整数列表按质数为分割符分割成小列表,并将小列表中的数字进行合并,与质数分割符一起,构成最终列表

题目如下在这里插入图片描述
先贴代码

import math
#判断素数
def isPrime(x:int):
    if x > 1:
        for i in range(2,int(math.sqrt(x))+1):
            if x%i == 0:
                return False
        return True
    else:
        return False
#整合列表,如[1,2,3,4,5] ---> 12345
def zhList(lst:list):
    num = 0
    count = len(lst)-1
    for i in lst:
        num += i*10**count
        count -= 1
    return num

def func3(lst:list):
    lst2 = []
    for i in lst:
        lst1 = []
        while i:
            lst1.append(i%10)
            i //= 10
        lst2.append(lst1[len(lst1) - 1])
        lst2.append(lst1[0])
    lst3 = []
    lst_result = []
    for j in lst2:
        if not isPrime(j):
            lst3.append(j)
        else:
            if len(lst3) != 0:
                lst_result.append(zhList(lst3))
            lst_result.append(j)
            lst3.clear()
    if len(lst3) != 0:
        lst_result.append(zhList(lst3))
    return lst_result
if __name__ == '__main__':
    print(func3([1,234,5,6,7,890]))
    print(func3([12,34,56,78,90]))
    print(func3([123]))
  • 首先需要写一个判断素数的函数isPrime(x:int)和一个将子列表中的数字整合成一个数字的函数zhList(lst:list)。
  • 然后按照题目的要求,在func3()中,第一步先将正整数列表的每个数字用他的头部和尾部进行替换,存入列表lst2中。
  • 遍历替换好后的列表lst2,用lst3来记录每个被质数分割的小列表,用lst_result来记录最终要求得到的列表即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值