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)