作者:
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]