Re: [問題] 新手list問題請教

看板Python作者 (和電腦對看中(男))時間6年前 (2018/09/28 11:09), 編輯推噓3(307)
留言10則, 3人參與, 6年前最新討論串6/6 (看更多)
各位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://www.ptt.cc/bbs/Python/M.1538104196.A.E5E.html

09/28 11:37, 6年前 , 1F
你的第三步 % 10**4 再zfill然後轉成數字陣列就好了
09/28 11:37, 1F

09/28 11:38, 6年前 , 2F
10 ** 4可以改成 10 ** len(a) # a = [9,9,9,9]
09/28 11:38, 2F

09/28 11:42, 6年前 , 3F
參考cutekid版友的運算,最後一行結構改為:
09/28 11:42, 3F

09/28 11:43, 6年前 , 4F
return [int(x) for x in numList[...
09/28 11:43, 4F

09/28 11:44, 6年前 , 5F
[...len(numList)-len(self):]]
09/28 11:44, 5F

09/28 11:57, 6年前 , 6F
我補充在原文,還是以cutekid版友的運算思維較為精煉
09/28 11:57, 6F

09/28 15:17, 6年前 , 7F
x = [...] y = [int(n) for n in str(int(‘’.join(x)
09/28 15:17, 7F

09/28 15:17, 6年前 , 8F
))]
09/28 15:17, 8F

09/28 15:35, 6年前 , 9F
上面少一個+1
09/28 15:35, 9F

09/28 15:36, 6年前 , 10F
在int 的掛號後面
09/28 15:36, 10F
文章代碼(AID): #1RhPk4vU (Python)
文章代碼(AID): #1RhPk4vU (Python)