integer
を に変換する最も迅速でクリーンな方法は何list
ですか?
たとえば、 と に変更し132
ます。である変数があり、個々の数字を比較できるようにしたいので、数字操作のためにリスト要素を簡単に int に戻すことができるので、それをリストにするのが最善だと思いました。[1,3,2]
23
[2,3]
int
int(number[0])
int(number[1])
integer
を に変換する最も迅速でクリーンな方法は何list
ですか?
たとえば、 と に変更し132
ます。である変数があり、個々の数字を比較できるようにしたいので、数字操作のためにリスト要素を簡単に int に戻すことができるので、それをリストにするのが最善だと思いました。[1,3,2]
23
[2,3]
int
int(number[0])
int(number[1])
最初に整数を文字列に変換してから、 を使用map
してそれに適用int
します。
>>> num = 132
>>> map(int, str(num)) #note, This will return a map object in python 3.
[1, 3, 2]
またはリスト内包表記を使用します。
>>> [int(x) for x in str(num)]
[1, 3, 2]
このページにはすでに優れた方法が記載されていますが、どれを使用するかについては少しわかりにくいようです. そのため、自分で簡単に決定できるように、いくつかの測定値を追加しました。
大量に使用されました (オーバーヘッド用)1111111111111122222222222222222333333333333333333333
map(int, str(num))
:import timeit
def method():
num = 1111111111111122222222222222222333333333333333333333
return map(int, str(num))
print(timeit.timeit("method()", setup="from __main__ import method", number=10000)
出力:0.018631496999999997
輸入時間
def method():
num = 1111111111111122222222222222222333333333333333333333
return [int(x) for x in str(num)]
print(timeit.timeit("method()", setup="from __main__ import method", number=10000))
出力:0.28403817900000006
この回答から取得したコード
結果は、組み込みメソッドを含む最初のメソッドがリスト内包表記よりもはるかに高速であることを示しています。
import timeit
def method():
q = 1111111111111122222222222222222333333333333333333333
ret = []
while q != 0:
q, r = divmod(q, 10) # Divide by 10, see the remainder
ret.insert(0, r) # The remainder is the first to the right digit
return ret
print(timeit.timeit("method()", setup="from __main__ import method", number=10000))
出力:0.38133582499999996
この回答から取得したコード
list(str(123))
正しい出力を提供しません):import timeit
def method():
return list(str(1111111111111122222222222222222333333333333333333333))
print(timeit.timeit("method()", setup="from __main__ import method", number=10000))
出力:0.028560138000000013
この回答から取得したコード
import timeit
def method():
n = 1111111111111122222222222222222333333333333333333333
l = []
while n != 0:
l = [n % 10] + l
n = n // 10
return l
print(timeit.timeit("method()", setup="from __main__ import method", number=10000))
出力:0.37039988200000007
この回答から取得したコード
いずれの場合も、map(int, str(num))
が最速の方法です (したがって、おそらくこれを使用するのが最善の方法です)。リスト内包表記は 2 番目に高速です (ただし、使用する方法map(int, str(num))
はおそらく 2 つの中で最も望ましい方法です。
車輪の再発明は興味深いものですが、実際の使用にはあまり望ましくないでしょう。
最短で最良の方法はすでに答えられていますが、私が最初に考えたのは数学的な方法だったので、ここにあります:
def intlist(n):
q = n
ret = []
while q != 0:
q, r = divmod(q, 10) # Divide by 10, see the remainder
ret.insert(0, r) # The remainder is the first to the right digit
return ret
print intlist(3)
print '-'
print intlist(10)
print '--'
print intlist(137)
これはもう1つの興味深いアプローチです。実際のユースケースでは、このようなものを使用する必要はありません。
list
文字列に変換された数値で使用します。
In [1]: [int(x) for x in list(str(123))]
Out[2]: [1, 2, 3]
num = list(str(100))
index = len(num)
while index > 0:
index -= 1
num[index] = int(num[index])
print(num)
オブジェクトを印刷し[1, 0, 0]
ます。