0

Python では、19 桁の数字を循環できる必要があります。これを行う典型的な方法は何ですか?私はpython 2.7.xを使用しています。ただし、実行可能なソリューションがあれば、python 3.x を使用します。

たくさんあります。1000**5(さらに大きい1000**10)たとえば; この数値リストを for ループで循環する必要があります。時間がかかることは承知しています。しかし、そのような大きな数を循環する方法が見つからないため、途方に暮れています。

xrangerange、およびitertools.islicepython 2.7 で試してみましたが、Overflowエラーが発生しました。

ありがとう

4

4 に答える 4

3

以下は、python 3.x に当てはまります。

Pythonのint型には制限がありません。0,1,2...n (n は 19 桁の数字) を繰り返し処理する場合は、次のようにします。

for i in range(n):
    pass #whatever you like

それには非常に長い時間がかかりますが。

于 2012-09-28T20:01:50.077 に答える
2

for ほどきれいではありませんが、while() を使用するだけで問題を解決できます (さらに、Python のどのバージョンでも動作します)。

i=0
while (i<1000**10):
    i += 1
    # do some stuff
于 2012-09-28T20:29:42.217 に答える
0

1桁を反復しようとしていた場合:

long_int_string = '34234345456575657'
for digit in [int(x) for x in long_int_string]:
    # do something useful with digit        
    print digit
于 2012-09-28T20:07:40.150 に答える
0

整数の個々の桁を反復処理したいようです。このような状況では、 が10x % 10進数の正の整数の右端の桁に等しいことを知っておくと便利ですx。それを念頭に置いて、モジュラスを繰り返し使用して数値を減らすことで、すべての桁を取得できます。

def splitIntoDigits(x):
    digits = []
    while x != 0:
        digits.insert(0, int(x%10))
        x /= 10
    return digits

print splitIntoDigits(15016023042)
[1, 5, 0, 1, 6, 0, 2, 3, 0, 4, 2]

また、コメディワンラインの答え:

>>> [int(num/(10**x)%10) for x in range(int(math.log(num,10)),-1,-1)]
[1, 5, 0, 1, 6, 0, 2, 3, 0, 4, 2]
于 2012-09-28T20:08:59.573 に答える