鱼C论坛

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

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

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

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

  12.     done_list.reverse()
  13.     #print(done_list)
  14.     return done_list

  15. list1 = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
  16. DealList(list1)
复制代码

评分

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

查看全部评分

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

使用道具 举报

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

  9. a=[33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
  10. print(Convert(a))
复制代码


答案:
  1. [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 | 显示全部楼层
  1. def fun(mlist):       
  2.         mstr=''.join([str(num) for num in mlist])       
  3.         mstr=mstr[-1]+mstr[0:len(mstr)-1]       
  4.         mlist=[int(mstr[2*k:2*k+2]) for k in range(0,len(mlist))]
  5.         return mlist

  6. mlist=[33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
  7. print('转换前:',mlist)
  8. print('转换后:',fun(mlist))
复制代码

评分

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

查看全部评分

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

使用道具 举报

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

  15. old_list = [33,54,29,75,83,15,38,30,88,15]
  16. print(my_change(old_list))
复制代码

评分

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

查看全部评分

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

使用道具 举报

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





  11. list1 = [33,54,29,75,83,15,38,30,88,15]
  12. print('input:',list1)
  13. print('output:',Lshift(list1))
复制代码

评分

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

查看全部评分

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

使用道具 举报

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

  10. mlist=[33, 514, 29, 75, 83, 115, 3, 30, 88, 15]
  11. print('转换前:',mlist)
  12. 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 编辑
  1. def fun(mylist):
  2.     allnum, result = '', []
  3.     for each in mylist:
  4.         allnum += str(each)
  5.     lenth = len(allnum)
  6.     allnum = allnum[lenth - 1] + allnum[0 : (lenth - 1)]
  7.     for i in range(0, lenth, 2):
  8.         result.append(int(allnum[i : (i+2)]))
  9.     return result

  10. 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 | 显示全部楼层
  1. def day167(l):
  2.     cond = 0
  3.     if isinstance(l,list) == 0:
  4.         print('您输入的不是列表')
  5.     else:
  6.         for i in l:
  7.             if i//10 > 10 or i//10 < 1:
  8.                 print('您输入的不是两位数列表')
  9.                 break
  10.             else:
  11.                 cond =1

  12.     if cond:
  13.         count = 0
  14.         l1 = [l[0]//10]

  15.         while count < len(l)-2:
  16.             l1.append(l[count]%10*10+l[count+1]//10)
  17.             count += 1
  18.             
  19.         l1.append(l[-2]%10*100+l[-1])
  20.         l1[0] = l1[-1]%10*10 + l1[0]
  21.         l1[-1] =  l1[-1]//10
  22.         return l1
  23.     else:
  24.         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 | 显示全部楼层
  1. def output(list_origin):
  2.     str_oringin = ''.join([str(i) for i in list_origin])
  3.     list_temp = [i for i in str_oringin]
  4.     list_temp.insert(0,list_temp.pop())
  5.     list_ans = [int(''.join(each)) for each in [list_temp[i:i + 2] for i in range(0, len(list_temp), 2)]]
  6.     return list_ans

  7. if __name__ == "__main__":
  8.     list_origin = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
  9.     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 | 显示全部楼层
  1. #-*- coding:utf8 -*-
  2. def fun(lis):
  3.     str1,new = "",""
  4.     li3 = []
  5.     for j in range(len(lis)):
  6.         str1 += str(lis[j])
  7.     str2 = str1[len(str1)-1] + str1[0:len(str1)-1]
  8.     for i in range(len(str2)):
  9.         if i%2==0 :
  10.             new += str2[i]
  11.         elif i==0:
  12.             new += str2[i]
  13.         elif i==len(str2)-1:
  14.             new += str2[i]
  15.         else:
  16.             new += str2[i]+ ","
  17.     li2 = new.split(",")
  18.     for i in range(len(li2)):
  19.         li3.append(int(li2[i]))   
  20.     return li3
  21. if __name__ == '__main__':
  22.     li = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
  23.     result = fun(li)
  24.     print(result)
  25.    
复制代码


测试结果:
[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 | 显示全部楼层
  1. def change(numlist):
  2.     newlist = []
  3.     newlist.append(numlist[0] / 10)
  4.     for i in range(1, len(numlist) -1 ):
  5.         numcount = 0        #计算索引为2后面的数字原本的位数
  6.         temp = numlist[i]
  7.         while temp:
  8.             numcount += 1
  9.             temp /= 10
  10.         newlist.append(numlist[i - 1] % 10 * pow(10, (numcount - 1))+ numlist[i] / 10)      #逗号左移,计算左移后的数字
  11.     numcount = 0
  12.     temp = numlist[-1]
  13.     while temp:
  14.         numcount += 1
  15.         temp /= 10
  16.     newlist.append(numlist[-2] % 10 * pow(10, numcount) + numlist[-1])
  17.     numcount = 0
  18.     temp = numlist[0]
  19.     while temp:
  20.         numcount += 1
  21.         temp /= 10
  22.     newlist[0] += newlist[-1] % 10 * pow(10, numcount - 1)
  23.     newlist[-1] = newlist[-1] / 10
  24.     return newlist


  25. print change([33, 54, 29223, 75, 83123123, 15, 38, 30, 88, 31231215110])
复制代码


重写了一个支持任意位数的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 14:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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