鱼C论坛

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

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

[复制链接]
发表于 2018-3-20 20:49:00 | 显示全部楼层

  1. def fun(num_ls):
  2.     for i in range(len(num_ls)):
  3.         num_ls[i] = str(num_ls[i])
  4.     num_str = ''.join(num_ls)
  5.     num_str = num_str[-1] + num_str[:-1]
  6.     result = []
  7.     for i in range(0, len(num_str), len(num_ls[0])):
  8.         result.append(int(num_str[i:i+len(num_ls[0])]))

  9.     return result
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-20 21:29:46 | 显示全部楼层
  1. def moveComma(aList):
  2.     numLen = len(str(aList[0]))  # 获得数字长度
  3.     # 将列表转换为字符串
  4.     aStr = [str(perNum) for perNum in aList]
  5.     aStr = ''.join(aStr)
  6.     result = [0]  # 给第一个数留出位置
  7.     for index in range(numLen - 1, len(aStr) - 1, numLen):
  8.         aNum = int(aStr[index:index + numLen])
  9.         result.append(aNum)
  10.     result[0] = int(aStr[-1] + aStr[0:numLen - 1])
  11.     return result


  12. inputList = [2114, 3735, 8317, 1400, 9149, 2104]
  13. print(moveComma(inputList))
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-20 21:35:49 | 显示全部楼层
  1. def lis(list1):
  2.     #声明新列表保存返回值
  3.     list2 = []
  4.     #将列表中逗号左移一位,最后一个两位数的个位移到最左
  5.     for i in range(len(list1)):
  6.         list2.append((list1[i-1] % 10) * 10 + (list1[i] // 10))
  7.     return list2
  8. #测试
  9. list1 = [11,22,33,44,55,66,77,88,99]
  10. list2 = lis(list1)
  11. print(list2)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-20 21:45:55 | 显示全部楼层
a = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]



def func(list1):
    num1 = len(list1)
    m = ''
   
    for x in range(num1):
        m += str(list1[x])
    b = []
    for y in range(num1):
        b.append(int(m[2*y-1]+m[2*y]))
   

    return b

print (func(a))

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-21 10:05:37 | 显示全部楼层
  1. L = [33, 5044, 29, 3275, 83, 175, 38, 35430, 88, 135]

  2. def func(L):
  3.     rs = ''
  4.     for x in str(L)[1:-1]:
  5.         if x == ',':
  6.             rs = rs[:-1] + x + rs[-1]
  7.         elif x == ' ':
  8.             continue
  9.         else:
  10.             rs += x
  11.     rs = rs[-1]+rs[:-1]
  12.     rs = rs.split(',')
  13.     return list(map(int,rs))

  14. print(func(L))
  15. #结果
  16. [53, 3504, 42, 9327, 58, 317, 53, 83543, 8, 813]
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-21 10:31:03 | 显示全部楼层
def fun(list1):
    list2 = [0]
    #最后一位留出来
    list3 = list1.copy()
    #删掉最后一位
    num = list3.pop()
    #最后一位的十位:
    a = num//10%10
    #最后一位的个位:
    b = num%10
    list2[0] = b
    for i in list3:
        #每一位的十位
        decade = i//10%10
        list2.append(decade)
        #每一位的个位
        unit = i%10
        list2.append(unit)
    list2.append(a)
    listresult = []
    for i in range(len(list2) - 1):
        if i % 2 == 0:
            num = list2[i] * 10 + list2[i + 1]
            i = i + 1
            listresult.append(num)
    return listresult

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


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

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-21 11:41:46 | 显示全部楼层
本帖最后由 凌九霄 于 2018-3-21 13:43 编辑
  1. import random

  2. random.seed()
  3. listone = []

  4. for i in range(1, 10):
  5.     listone.append(random.randint(10, 99))

  6. print("生成的随机数组:", listone)


  7. def listchange(listpara):
  8.     listtwo = []
  9.     stringlist = map(str, listpara)
  10.     char = ''.join(list(stringlist))
  11.     char = char[-1] + char[0:len(char) - 1]
  12.     x = 0
  13.     while x < len(char):
  14.         listtwo.append(int(char[x:x + 2]))
  15.         x += 2
  16.     return listtwo


  17. print("逗号左移位数组:", listchange(listone))
复制代码

360截图20180321114022497.jpg 360截图20180321114130627.jpg

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-21 12:48:57 | 显示全部楼层
ls1 = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
str1 = [str(i) for i in ls1]  #把ls1变成字符串
str2 = ''.join(str1)    #把ls2合并成一个字符串
print(str2)

n = len(str2)

#把字符串的第一个和最后一个调整位置
str3 = str2[n-1] + str2[:(n-1)]

print(str3)

#把字符串变成一个数字的列表

i = 0
ls2 = []
ls3 = []
while i < (len(str3)-1):

    #把字符串的两个两个取出
    str4 = str3[i] + str3[i+1]
    #把字符串加到列表里
    ls3.append(str4)
    i = i+2

print(ls3)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-21 16:23:42 | 显示全部楼层
  1. list_a = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]

  2. list_b =[str(i) for i in list_a]

  3. list_c = []

  4. a = list(''.join(list_b))

  5. a.append(a[0])
  6. del a [0]

  7. b = 0
  8. k = ''

  9. for j in a:
  10.     k += j
  11.     b += 1
  12.     if b % 2 == 0:
  13.         list_c.append(k)
  14.         k = ''

  15. list_d = [int(l) for l in list_c]

  16. print(list_d)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-21 23:54:59 | 显示全部楼层
本帖最后由 checkily 于 2018-3-22 00:06 编辑

我的方法很土:
  1. list1 = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]


  2. def move(lis):
  3.     temp = []
  4.     temp.append(lis[0]//10)
  5.     for each in range(len(lis)-2):
  6.         temp.append((lis[each] % 10)*10+(lis[each+1]//10))
  7.     temp.append((lis[-2])//10*10**len(str(lis[-1]))+lis[-1])
  8.     temp[0] += (temp[-1] % 10)*10**len(str(temp[0]))
  9.     temp[-1] = temp[-1] // 10
  10.     return temp


  11. print(move(list1))
复制代码



用len()判断数字是几位数

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-22 00:34:42 | 显示全部楼层
本帖最后由 125zl 于 2018-3-22 00:35 编辑

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

使用道具 举报

发表于 2018-3-22 12:07:46 | 显示全部楼层
  1. def f(lis):
  2.     lis1 = [str(i) for i in lis]
  3.     str1 = ''.join(lis1)
  4.     lis2 = []
  5.     for i in range(1, len(str1) - 2, 2):
  6.         lis2.append(int(str1[i: i + 2]))
  7.     lis2.insert(0, int(str1[-1] + str1[0]))
  8.     return lis2
  9. lis = [33, 54, 29, 75, 83, 15, 38, 30, 88, 15]
  10. result = f(lis)
  11. print(result)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-22 14:29:47 | 显示全部楼层
本帖最后由 fan1993423 于 2018-3-22 14:40 编辑

a=[int(k) for k in input('请输入一串两位数,用逗号隔开').split(',')]
l=''
u=[]
for b in a:
    l+=str(b)
i=1
j=2
u.append(int(l[0]))
while i<len(l)-4:
    u.append(int(l)*10+int(l[j]))
    i+=2
    j+=2
u.append(int(l[len(l)-3])*100+int(l[len(l)-2])*10+int(l[len(l)-1]))
ge=u[len(u)-1]%10
bai=u[len(u)-1]//100
shi=(u[len(u)-1]-bai*100-ge)//10

new=bai*10+shi
u[0]=u[0]+ge*10
u[len(u)-1]=new
print(u)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-22 18:58:15 | 显示全部楼层
评分截至标记。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-22 19:30:44 | 显示全部楼层
  1. # encoding: utf-8
  2. '''
  3. 本程序是将一个全都是两位数的列表中逗号向右移一个位置并将多余的数字排到第一个位置去
  4. 如[12,34]=>[41,23]
  5. '''
  6. def yw(dnl):
  7.     a = []
  8.     for i in range(len(dnl)):
  9.         a.append((dnl[i-1] % 10 * 10) + (dnl[i]//10))
  10.     return a


  11. if __name__ == "__main__":
  12.     l1 = [12, 34, 56, 78, 90]
  13.     l2 = yw(l1)
  14.     print(l2)

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

使用道具 举报

发表于 2018-3-22 23:01:52 | 显示全部楼层
o41003121 发表于 2018-3-20 17:05
def switchnl(nlist):
    nlength = len(nlist)
    nclist = []

你这个方法还真是不错,多位数移动也顺带解决了~还有就是最后一位数移到前面的问题,总觉得会是个难点,结果根本不用在意,nlist(-1)正好就是指的最后一个元素!
还是不太习惯在列表里用负数去索引,这点得学习,用好了会非常方便~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-22 23:06:48 | 显示全部楼层

利用str.join方法一句就将列表转化成字符串了,get到了新技能~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-22 23:10:07 | 显示全部楼层

列表推导式一句话就把字符串分割成列表了~~getget~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 00:40:02 | 显示全部楼层

如果是多种位数的列表就不太好用了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-25 16:35:33 | 显示全部楼层
  1. def move(list1):
  2.     str1 = ''
  3.     for eachnumber in list1:
  4.         str1 += str(eachnumber)
  5.     str1 = str1[len(str1)-1] + str1[:(len(str1)-1)]
  6.     list2 = []
  7.     for i in range(0, len(str1)-1, 2):
  8.         str_tmp = str1[i:i+2]
  9.         list2.append(int(str_tmp))
  10.     return list2
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 18:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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