鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

[技术交流] Python:每日一题 167

[复制链接]
发表于 2018-3-20 10:04:37 | 显示全部楼层
def DealList(target_list):
    done_list = []
    temp = str(target_list[-1])[-1]
    for i in range(len(target_list)-1):
        
        temp1 = str(target_list[-1-i])[:-1]
        temp2 = str(target_list[-1-i-1])[-1]
        target_list[-1-i] = int(temp2 + temp1)
        
        done_list.append(target_list[-1-i])

    done_list.append(int(temp+str(target_list[0])[0]))

    done_list.reverse()
    #print(done_list)
    return done_list

list1 = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
DealList(list1)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 10:24:38 | 显示全部楼层
def Convert(alist):
    m=''
    for i in alist:
        m+=str(i)
    n=[int(m[-1]+m[0])]
    for i in range(len(m)-1)[1::2]:
        n.append(int(m[i:i+2]))
    return n

a=[33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
print(Convert(a))

答案:
[53, 35, 42, 97, 58, 31, 53, 83, 8, 81]

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 10:47:09 | 显示全部楼层
def re(s):#输入一个列表,例如s = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
    #打印输入参数
    print(s)
    s1 = []
    s2 = []
    #获取输入列表的长度,并分离列表中单个元素
    l = len(s)
    for i in range(0,l):
        a = str(s[i])
        t = len(a)
        #将分离的元素重组列表
        for i in range(0,t):
            b = a[i]
            s1.append(b)
    #将最后的元素移到最前
    d = s1[len(s1) - 1]
    s1.insert(0,d)
    del s1[len(s1) - 1]
    #重组两位数新列表,针对元素个数奇偶分开处理
    if len(s1)%2 == 0 :
        for i in range(0,len(s1),2):
            #删除0开头的两位数
            if int(s1[i]) == 0:
                a = s1[i+1]
            else:
                a = s1[i] + s1[i+1]
            s2.append(int(a))
    else:
        for i in range(0,len(s1)-1,2):
            if int(s1[i]) == 0:
                a = s1[i+1]
            else:
                a = s1[i] + s1[i+1]
            s2.append(int(a))
        #元素个数位奇数时,单独添加最后一个元素   
        s2.append(int(s1[len(s1)-1]))
    return(s2)
a = re([33, 54, 29, 75, 83, 15, 38, 30, 88, 15])
print(a)
运行结果:
捕获.PNG

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 11:23:47 | 显示全部楼层
def fun(mlist):        
        mstr=''.join([str(num) for num in mlist])        
        mstr=mstr[-1]+mstr[0:len(mstr)-1]        
        mlist=[int(mstr[2*k:2*k+2]) for k in range(0,len(mlist))]
        return mlist

mlist=[33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
print('转换前:',mlist)
print('转换后:',fun(mlist))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 11:40:08 | 显示全部楼层
def my_change(old):
    temp = []   #存储原列表中每个两位数拆分成的两个数
    new = []
    for each in old:
        a = each//10
        b = each%10
        temp.append(a)
        temp.append(b)
    length = len(temp)
    for i in range(length-1):
        if i%2 != 0:
            new.append(temp[i]*10 + temp[i+1])
    new.insert(0,temp[-1]*10 + temp[0])
    return new

old_list = [33,54,29,75,83,15,38,30,88,15]
print(my_change(old_list))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 12:28:18 | 显示全部楼层
def Lshift(list1):
        list2 = []
        ax = 0
        for i in range(len(list1)):
                if i == 0:
                        ax = (list1[-1]%10)*10 + list1[i]//10
                else:
                        ax = (list1[i-1]%10)*10 + list1[i]//10
                list2.append(ax)
        return list2





list1 = [33,54,29,75,83,15,38,30,88,15]
print('input:',list1)
print('output:',Lshift(list1))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 13:08:32 | 显示全部楼层
考虑到位数不定
def fun(mlist):
        mstr=list(','.join([str(num) for num in mlist]))
        for k in range(0,len(mstr)):
                if mstr[k]==',':
                        mstr[k-1],mstr[k]=mstr[k],mstr[k-1]
        mstr=''.join(mstr)
        mstr=mstr[-1]+mstr[0:len(mstr)-1]        
        mlist=[int(x) for x in  mstr.split(',')]
        return mlist

mlist=[33, 514, 29, 75, 83, 115, 3, 30, 88, 15]
print('转换前:',mlist)
print('转换后:',fun(mlist))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 13:41:02 | 显示全部楼层
def list1():
    l =[]  #生成列表
    while True:
        s =input("enter a num:")
        if s == "0":
            break
        else:
            l.append(s)
    bs =" "  #转换字符串
    for i in l:
        bs +=i+""
    bs=bs[-1]+bs[:-1]#换位子
    bs_1 =bs.replace(" ","") #去空格
    bs_lst = []
    i=0
    while i < len(str(bs_1)):
        bs_lst.append(bs_1[i:i+2])
        i=i+2
    return bs_lst   #生成新列表


n = list1()
print(n)


含泪做出来 新手 感觉自己逻辑思维太差劲  

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2 要求得到数字列表

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 13:49:14 | 显示全部楼层
#参数temp为一个两位数组成的列表
def func(temp):
   
    index = []  #最终需返回的列表
   
    #将数组转化为字符串
    chars = ''
    for i in temp:
        chars += str(i)
   
    chars = chars[-1] + chars[0:-1]#利用切片将字符串最后一个字符修改到第一

    for i in range(0, len(chars), 2):
        index.append(int(chars[i:i+2]))

    return index

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 13:52:22 | 显示全部楼层
def yiwei(x):
    z=list(x)
    l = len(z)
    new = []
    i = 0
    while i <l:
        new.append((z[i]//10)+(z[i-1]%10)*10)
        i = i+1
    return new
y= tuple(eval(input ('请输入一个都是由两位数组成的列表')))
print(yiwei(y))
        
        

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 14:25:47 | 显示全部楼层
本帖最后由 Chase_Kas 于 2018-3-20 14:26 编辑
def fun(mylist):
    allnum, result = '', []
    for each in mylist:
        allnum += str(each)
    lenth = len(allnum)
    allnum = allnum[lenth - 1] + allnum[0 : (lenth - 1)]
    for i in range(0, lenth, 2):
        result.append(int(allnum[i : (i+2)]))
    return result

print(fun([33, 54, 29, 75, 83, 15, 38, 30, 88, 15]))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 15:24:35 | 显示全部楼层
def day167(l):
    cond = 0
    if isinstance(l,list) == 0:
        print('您输入的不是列表')
    else:
        for i in l:
            if i//10 > 10 or i//10 < 1:
                print('您输入的不是两位数列表')
                break
            else:
                cond =1

    if cond:
        count = 0
        l1 = [l[0]//10]

        while count < len(l)-2:
            l1.append(l[count]%10*10+l[count+1]//10)
            count += 1
            
        l1.append(l[-2]%10*100+l[-1])
        l1[0] = l1[-1]%10*10 + l1[0]
        l1[-1] =  l1[-1]//10
        return l1
    else:
        None

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 16:18:21 | 显示全部楼层
def new_lis(*args):
    str1 = ''
    new_list = []
    count_list = []
    for each in args:
        count_list.append(len(str(each)))
        str1 += str(each)
    print(len(str1))
    i = count_list[0] - 1
    c_list = count_list[1:]
    print(i)
    for each in c_list:

        num = int(str1[i : i + each])

        new_list.append(num)
        i += each
        while i >= len(str1):
            break
    new_list.insert(0, int(str1[-1] + str1[0 : 0 + count_list[0] - 1]))
    return new_list

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 16:47:30 | 显示全部楼层
def switchnl(nlist):
    nlength = len(nlist)
    nclist = []
    for each in range(nlength):
        nclist.append(nlist[each-1]%10*10+nlist[each]//10)
    return nclist

nlist = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]

print(switchnl(nlist))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 16:48:59 | 显示全部楼层
def output(list_origin):
    str_oringin = ''.join([str(i) for i in list_origin])
    list_temp = [i for i in str_oringin]
    list_temp.insert(0,list_temp.pop())
    list_ans = [int(''.join(each)) for each in [list_temp[i:i + 2] for i in range(0, len(list_temp), 2)]]
    return list_ans

if __name__ == "__main__":
    list_origin = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
    print(output(list_origin))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 17:05:40 | 显示全部楼层
def switchnl(nlist):
    nlength = len(nlist)
    nclist = []
    for each in range(nlength):
        nump = len(str(nlist[each]))
        nclist.append(nlist[each-1]%10*(10**(nump-1))+nlist[each]//10)
    return nclist

nlist = [33, 154, 29, 175, 83, 15, 38, 30, 88, 15]

print(switchnl(nlist))


实现多位数的移动
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-3-20 17:19:23 | 显示全部楼层
def yiwei(a):
        s = ''
        for i in range(len(a)):
                s += str(a[i])
               
        c = []
        for i in range(len(s)):
                if i%2 ==0:
                        if i == 0:
                               
                                c.append(int(s[len(s)-1]+s[i]))
                        else:
                                if s[i-1] == '0':
                                        c.append(int(s[i]))
                                else:
                                        c.append(int(s[i-1:i+1]))
        return c

if __name__ == '__main__':
        e = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15, 34, 66]
        print(yiwei(e))


输出:[63, 35, 42, 97, 58, 31, 53, 83, 8, 81, 53, 46]

太笨的办法,只能解答应付两位数列表,还要看看各位的解答,增长知识

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 17:44:25 | 显示全部楼层
#-*- coding:utf8 -*-
def fun(lis):
    str1,new = "",""
    li3 = []
    for j in range(len(lis)):
        str1 += str(lis[j])
    str2 = str1[len(str1)-1] + str1[0:len(str1)-1]
    for i in range(len(str2)):
        if i%2==0 :
            new += str2[i] 
        elif i==0:
            new += str2[i]
        elif i==len(str2)-1:
            new += str2[i]
        else:
            new += str2[i]+ ","
    li2 = new.split(",")
    for i in range(len(li2)):
        li3.append(int(li2[i]))    
    return li3
if __name__ == '__main__':
    li = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
    result = fun(li)
    print(result)
    

测试结果:
[53, 35, 42, 97, 58, 31, 53, 83, 8, 81]

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 17:58:13 | 显示全部楼层
list1 = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
list2 = []
list3 = []
for i in range(len(list1)):
    if i==0:
        list2.append(list1[i]//10)
    elif i == len(list1)-1:
        list2.append(list1[i-1] % 10 * 100 + list1[i])
    else:
        list2.append(list1[i-1]%10*10+list1[i]//10)

for i in range(len(list2)):
    if i==0:
        list3.append(list2[-1]%10*10+list2[i])
    elif i==len(list2)-1:
        list3.append(list2[-1]//10)
    else:
        list3.append(list2[i])
print(list3)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 18:01:37 | 显示全部楼层
def change(numlist):
    newlist = []
    newlist.append(numlist[0] / 10)
    for i in range(1, len(numlist) -1 ):
        numcount = 0        #计算索引为2后面的数字原本的位数
        temp = numlist[i]
        while temp:
            numcount += 1
            temp /= 10
        newlist.append(numlist[i - 1] % 10 * pow(10, (numcount - 1))+ numlist[i] / 10)      #逗号左移,计算左移后的数字
    numcount = 0
    temp = numlist[-1]
    while temp:
        numcount += 1
        temp /= 10
    newlist.append(numlist[-2] % 10 * pow(10, numcount) + numlist[-1])
    numcount = 0
    temp = numlist[0]
    while temp:
        numcount += 1
        temp /= 10
    newlist[0] += newlist[-1] % 10 * pow(10, numcount - 1)
    newlist[-1] = newlist[-1] / 10
    return newlist


print change([33, 54, 29223, 75, 83123123, 15, 38, 30, 88, 31231215110])

重写了一个支持任意位数的

点评

很好  发表于 2018-3-23 19:20
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 20:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表