Re: [问题] 新手list问题请教

楼主: s077022 (和电脑对看中(男))   2018-09-28 11:09:54
各位Python的前辈您好,我个人是初学python的小嫩嫩
想借由这次的题目跟大家讨论看看几个问题:
(1)原列表[9,9,9,9],加上固定的值1以后,转换成[1,0,0,0,0]
即可参考cutekid大大的写法
(2)但是原列表[9,9,9,9],加上固定的值1以后,如欲转换成[0,0,0,0]
除了jasonislin大大的写法以外,是否还有其他方法可达成?
因为针对(2)这个题目,小弟理解的逻辑和做法是:
1.将原列表转换成数字,如[0,0,9,9]就转换成99
2.将转换成的数字+1
3.利用zfill函数将得到的数字补足成四位数字
4.从后面将数字读入新列表,以确保不会读到第5位数字(例如10000时,只读取0000)
5.得到的新列表利用reverse函数将列表重新表达
6.print 新的列表
还请各位前辈不吝指教,让小弟可以多学习,以及加强对列表的概念
谢谢
※ 引述《jasonislin (jason)》之铭言:
: def increment(self, add=1, output=[]):
: for index, value in enumerate(self[::-1]):
: add += value * 10 ** (index)
: output.insert(0, (add // 10 ** index ) % 10)
: return output
: print(increment([0, 9, 9, 9])
: # 我的结构弄得比较复杂, 希望能再精进, 望版友不吝指正, 谢谢:-) ;
: # 概念为: 将数列视为10为底的指数列, 并依位数加总运算
: # 1. 默认arg: add=1 (whole list increment by 1), output (empty list)
: # 2. 利用enumerate()及slicing[start:end:step]作数列运算-由各个位数加总
: #
: # for index, value in enumerate(self[::-1]):
: # >>> 0, 9
: # 1, 9
: # 2, 9
: # 3, 0
: # 依序为(倒数)第0项(start=0), 第0项值
: #
: # 3. 利用list.insert(index=0, x)特性及operator计算各位数的值
: # 4. add值为总合
: #
: ※ 引述《rexyeah (ccccccc)》之铭言:
: : a = [0, 9, 9, 9]
: : def s(n):
: : return n+1 if n < 9 else (n+1) % 10
: : print map(lambda x: s(x), a)
: : ==
: : Output
: : [1, 0, 0, 0]
作者: rexyeah (ccccccc)   2018-09-28 11:37:00
你的第三步 % 10**4 再zfill然后转成数字阵列就好了10 ** 4可以改成 10 ** len(a) # a = [9,9,9,9]
作者: jasonislin (jason)   2018-09-28 11:42:00
参考cutekid版友的运算,最后一行结构改为:return [int(x) for x in numList[...[...len(numList)-len(self):]]我补充在原文,还是以cutekid版友的运算思维较为精炼
作者: sherees (ShaunTheSheep)   2018-09-28 15:17:00
x = [...] y = [int(n) for n in str(int(‘’.join(x)))]上面少一个+1在int 的挂号后面

Links booklink

Contact Us: admin [ a t ] ucptt.com