String 将整数列表转换为单个整数:ValueError

String 将整数列表转换为单个整数:ValueError,string,python-2.7,list,integer,String,Python 2.7,List,Integer,我试图将Python中的整数列表转换为单个整数,例如[1,2,3,4]到1234(整数)。在我的函数中,我使用以下代码: L = [1,2,3,4] b = int(''.join(map(str, L))) return b 编译器抛出一个ValueError。为什么会这样?如何纠正此问题?如果导致问题,您也可以这样做: L = [1,2,3,4] maxR = len(L) -1 res = 0 for n in L: res += n * 10 ** maxR maxR -=

我试图将Python中的整数列表转换为单个整数,例如
[1,2,3,4]
1234
(整数)。在我的函数中,我使用以下代码:

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

编译器抛出一个
ValueError
。为什么会这样?如何纠正此问题?

如果导致问题,您也可以这样做:

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


另一个解决办法是

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

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

sum(map(digits, L[::-1]))
digits()
是一个非纯函数,它接受一个数字并根据每次迭代调用的数字将其放置在place值上

 1. digits(4) = 4 1st iteration
 2. digits(4) = 40 2nd iteration
 3. digits(4) = 400 3rd iteration
当我们将map从倒排列表L[::-1]返回的数组相加时,我们得到1234,因为数组中的每个数字都被提升到它的位置值
如果我们选择不将L数组反转为L[::-1],那么我们需要我们的digits函数做更多的工作来计算列表中每个数字的位置值,因此我们使用它来获取语言功能的adv,它在我的机器上运行良好。然而,这不是构造联接整数的推荐方法。