“为什么?”;int(&x27;&x27;.join(map(str,numset)))";在Python中导致ValueError?

“为什么?”;int(&x27;&x27;.join(map(str,numset)))";在Python中导致ValueError?,python,string,type-conversion,int,itertools,Python,String,Type Conversion,Int,Itertools,基本上,我将一个元组“numset”转换成一个字符串iterable,这样我就可以连接所有的整数。然后,我再把它变成一个整数。但是,它会导致一个ValueError:以10为基数的int()的文本无效:“” import itertools arr = [1, 2, 3] for l in range(0, len(arr)+1): for numset in itertools.combinations(arr, l): pr

基本上,我将一个元组“numset”转换成一个字符串iterable,这样我就可以连接所有的整数。然后,我再把它变成一个整数。但是,它会导致一个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))))
导致
基数为10的int()的文本无效:“”

前两个print语句可以工作。我尝试先将其转换为浮点,然后再转换为整数,但出现错误
无法将字符串转换为浮点

下面分别是前两个print语句的输出

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

失败数据:

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

ValueError: invalid literal for int() with base 10: ''
文件“”,第16行,在
打印(int(“.join(map(str,numset)))
ValueError:基数为10的int()的文本无效:“”
从文档中,返回输入iterable中元素的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 (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

错误发生了什么?我们的想法是将输入打印到失败的行。第一个空集(而不是转换为空字符串)不能转换为
int
。如果@Jude\u Tomas想要像您的解决方案所示将数组元素转换为字符串,他不能使用以下简单代码:
arr=[1,2,3]arr\u to\u str=”“for i in arr:arr\u to\u str+=str(i)print(arr_to_str)
而不是进入这样的领域complexity@JenilDave-很难猜测示例程序的全部意图,但我假设OP确实希望所有组合都是整数,而不仅仅是一个字符串
“123”
。它也可以写成
“”。join(str(v)表示arr中的v)
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: ''
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