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