📜  Python程序将多个整数列表转换为单个整数

📅  最后修改于: 2022-05-13 01:55:18.770000             🧑  作者: Mango

Python程序将多个整数列表转换为单个整数

给定一个整数列表,编写一个Python程序将给定列表转换为单个整数。

例子:

Input : [1, 2, 3]
Output : 123

Input : [55, 32, 890]
Output : 5532890

有多种方法可以将给定列表转换为单个整数。让我们一一来看。

方法#1:朴素方法
只需迭代列表中的每个元素并打印它们之间没有空格。

# Python3 program to convert a list
# of integers into a single integer
  
# creating a list
lst = [12, 15, 17]
  
# iterating each element
for i in lst:
    print(i, end="")

输出:

121517


方法 #2:使用join()

使用Python的join()方法。首先将整数列表转换为字符串列表(因为join()仅适用于字符串)。然后,只需使用join()方法加入它们。它需要O(n)的时间复杂度。

# Python3 program to convert a list
# of integers into a single integer
def convert(list):
      
    # Converting integer list to string list
    s = [str(i) for i in list]
      
    # Join list items using join()
    res = int("".join(s))
      
    return(res)
  
# Driver code
list = [1, 2, 3]
print(convert(list))

输出:

123


方法 #3:使用map()

另一种将多个整数列表转换为单个整数的方法是使用Python的map()函数和str函数将整数列表转换为字符串列表。在此之后,将它们加入空字符串,然后转换回整数。

# Python3 program to convert a list
# of integers into a single integer
def convert(list):
      
    # Converting integer list to string list
    # and joining the list using join()
    res = int("".join(map(str, list)))
      
    return res
  
# Driver code
list = [1, 2, 3]
print(convert(list))

输出:

123


方法 #4:乘以 10 的对应幂

一种不需要将整数列表转换为字符串列表的更数学的方法是,将每个整数元素乘以其对应的 10 的幂,然后将其相加。它需要O(n)的时间复杂度。

# Python3 program to convert a list
# of integers into a single integer
def convert(list):
      
    # multiply each integer element with its 
    # corresponding power and perform summation
  
    res = sum(d * 10**i for i, d in enumerate(list[::-1]))
      
    return(res)
  
# Driver code
list = [1, 2, 3]
print(convert(list))

输出:

123

该程序的一个小变化导致计算总和的计算量减少,即使用reduce() 。这利用了霍纳规则,该规则将表示数字的多项式分解,以减少乘法次数。

res = functools.reduce(lambda total, d: 10 * total + d, list, 0)