因此,基本上,我将一个元组“ 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: ''
根据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