为什么“ int(''。join(map(str(num,numset)))”在Python中导致ValueError?

问题描述 投票:0回答:1

因此,基本上,我将一个元组“ numset”转换为可迭代的字符串,以便可以连接所有整数。然后,我再次将其变成整数。但是,它导致ValueError:以10为底的int()的无效文字:''

    import itertools

    arr = [1, 2, 3]

    for l in range(0, len(arr)+1):
        for numset in itertools.combinations(arr, l):
            print(numset)
            print ("".join(map(str,numset)))
            print(int("".join(map(str,numset))))

结果invalid literal for int() with base 10: ''

前两个打印语句起作用。我尝试先将其转换为浮点数,然后转换为整数,但它给出了错误could not convert string to float

这里分别是前两个打印语句的输出。

()
(1,)
(2,)
(3,)
(1, 2)
(1, 3)
(2, 3)
(1, 2, 3)

1
2
3
12
13
23
123

失败数据:

File "", line 16, in <module>
print(int("".join(map(str,numset))))

ValueError: invalid literal for int() with base 10: ''
python string type-conversion int itertools
1个回答
0
投票

根据itertools.combinations文档,从可迭代的输入返回元素的r长度子序列。。由于从0开始进行枚举,因此长度为零。调试调试打印一点点

import itertools

arr = [1, 2, 3]

for l in range(0, len(arr)+1):
    for numset in itertools.combinations(arr, l):
        print('data', repr(numset), repr("".join(map(str,numset))))
        print(int("".join(map(str,numset))))

显示

data () ''
Traceback (most recent call last):
  File "h.py", line 8, in <module>
    print(int("".join(map(str,numset))))
ValueError: invalid literal for int() with base 10: ''

从1开始枚举

import itertools

arr = [1, 2, 3]

for l in range(1, len(arr)+1):
    for numset in itertools.combinations(arr, l):
        print('data', repr(numset), repr("".join(map(str,numset))))
        print(int("".join(map(str,numset))))

您会得到数据

data (1,) '1'
1
data (2,) '2'
2
data (3,) '3'
3
data (1, 2) '12'
12
data (1, 3) '13'
13
data (2, 3) '23'
23
data (1, 2, 3) '123'
123
© www.soinside.com 2019 - 2024. All rights reserved.