作者s077022 (和电脑对看中(男))
看板Python
标题Re: [问题] 新手list问题请教
时间Fri Sep 28 11:09:54 2018
各位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]
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.26.1.234
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1538104196.A.E5E.html
1F:推 rexyeah: 你的第三步 % 10**4 再zfill然後转成数字阵列就好了 09/28 11:37
2F:→ rexyeah: 10 ** 4可以改成 10 ** len(a) # a = [9,9,9,9] 09/28 11:38
3F:→ jasonislin: 参考cutekid版友的运算,最後一行结构改为: 09/28 11:42
4F:→ jasonislin: return [int(x) for x in numList[... 09/28 11:43
5F:→ jasonislin: [...len(numList)-len(self):]] 09/28 11:44
6F:→ jasonislin: 我补充在原文,还是以cutekid版友的运算思维较为精炼 09/28 11:57
7F:推 sherees: x = [...] y = [int(n) for n in str(int(‘’.join(x) 09/28 15:17
8F:→ sherees: ))] 09/28 15:17
9F:推 sherees: 上面少一个+1 09/28 15:35
10F:→ sherees: 在int 的挂号後面 09/28 15:36