2017-06-25 16 views
1

私はPythonの整数のリストを例えば[1,2,3,4]から1234(整数)のような単一の整数に変換しようとしています。私の機能では、私は次のコードを使用しています:整数のリストを単一の整数に変換する:ValueError

L = [1,2,3,4] 
b = int(''.join(map(str, L))) 
return b 

コンパイラはValueErrorをスローします。なぜそうなのか?この問題を解決するには?

+1

私のマシンで正常に動作します。それにもかかわらず、これは結合された整数を構築するための推奨された方法ではありません。 –

答えて

1

その問題を引き起こす場合にも、このようにこれを行うことができます。

L = [1,2,3,4] 
maxR = len(L) -1 
res = 0 
for n in L: 
    res += n * 10 ** maxR 
    maxR -= 1 
print(res) 
0

は、別の解決策が

L = [1,2,3,4] 
digitsCounter = 1 

def digits(num): 
    global digitsCounter 
    num *= digitsCounter 
    digitsCounter *= 10 
    return num 

sum(map(digits, L[::-1])) 

digits()が非純粋関数であるだろうそれは数をとり、thに応じてplaceの値に置きます我々は1234を取得し、アレイ内のすべての数字が場所値 それに掲揚されているので - 私たちは[1 ::]反転リストLからマップによって返された配列をまとめる各反復

1. digits(4) = 4 1st iteration 
2. digits(4) = 40 2nd iteration 
3. digits(4) = 400 3rd iteration 

上の電子反復呼び出し元の数字L [:: - 1]にLの配列を反転させない場合は、リスト内の各数値の位置値を把握するために数字関数が必要になりますので、これを使用して言語機能を利用します。

関連する問題