26840


pythonで数値を桁別に取得したいです。  
152という数字があったら、num[0]=1 num[1]=5 num[2]=2といった形にしたいです。

int(math.log10(num) + 1))で桁数を取得して、num[0]=152/100
…として求めていくのは考えつきますが、よりスマートにやる方法があったら知りたいです。

宜しくお願いします。


CC BY-SA 3.0
2016-06-18T16:40:30.960
26837
2016-06-18T19:11:15.853
16881
question
python
python で 数値を桁別に取得するには


スマートに、というより基本的な数値の10進変換をpythonで書くとこうなる言うことで。

[code]

    num = []
    n = 152
    while n != 0:
      num.append(n % 10)
      n /= 10
    num.reverse()
    
    num
    ->[1, 5, 2]
    
[/code]

一度文字列に変換するなんてのがありなら、こんな感じでも書けますね。

[code]

    n = 152
    num = map(int, str(n))
    
[/code]

(追記)  
前半のコードはn > 0, 後半のコードはn >= 0が動作条件ですね。整数は大前提としています。


CC BY-SA 3.0
2016-06-18T17:06:19.300
26840
2016-06-18T17:27:36.827
2016-06-18T17:27:36.827
13972
13972
26837
answer


参考までに `generator` を使う方法などを。

[code]

    def gen(n):
      if n < 10:
        yield n
      else:
        for m in gen(n/10):
          yield m
        yield n%10
    
    >>> [int(i) for i in gen(123456)]
    [1, 2, 3, 4, 5, 6]
    >>> map(int, gen(944255603587320099))
    [9, 4, 4, 2, 5, 5, 6, 0, 3, 5, 8, 7, 3, 2, 0, 0, 9, 9]
    
[/code]


CC BY-SA 3.0
2016-06-18T19:11:15.853
26842
2016-06-18T19:11:15.853
26837
answer