Skip to main content
 首页 » 编程设计

python之子列表到编号

2025年05月04日16dudu

我正在研究我发现的一个有趣问题的解决方案。我的代码给出了一堆子列表,比如 (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))