我正在研究我发现的一个有趣问题的解决方案。我的代码给出了一堆子列表,比如 (1, 2, 3, 0, 0)。有没有办法将该子列表转换为数字 12300 并将其附加到新列表 perm2?我将不得不为相当多的子列表执行此操作,因此最好是我可以在整个列表上运行的函数(即,它将遍历列表,对每个数字进行转换,并将每个新数字附加到新列表,尽管旧列表将保持完全相同)。
到目前为止,我有代码
import itertools
digits = [1,2,3,0,0]
perm = list(itertools.permutations(digits))
perm2 = []
print perm
def lst_var (lst):
for i in lst:
litem = lst[i]
#conversion takes place
perm2.append(v)
lst_var(perm)
但是我实在不知道怎么转换,到处都找不到解决办法。任何帮助将不胜感激。
谢谢!
请您参考如下方法:
这是一个从数字列表中创建整数的函数。这个函数的优点是它不会将整数列表转换为字符串列表,这是一个相当昂贵的操作:
def list_to_int(ls):
num = 0
for digit in ls:
num *= 10
num += digit
return num
应用于您的示例:
list_to_int([1,2,3,0,0])
12300
为了将它应用到子列表列表,您可以使用列表推导,或者,如我个人更喜欢,map:
sublists = [[7, 6, 6], [5, 7, 6], [9, 0, 9, 0], [8, 9, 5, 7, 8, 4]]
map(list_to_int, sublists)
[766, 576, 9090, 895784]
因此,按照该模型,您的代码最终会看起来像这样:
digits = [1,2,3,0,0]
perm = map(list_to_int, itertools.permutations(digits))
