python - 给定数字的所有可能的子数字
问题描述
我正在开发程序以获取给定数字的所有可能(重叠和非重叠)子数字。例如 n=789。所有可能的子数字是 789,7,8,9,78,79,89。但是通过我的代码,我只得到重叠的子数字。你能帮我如何获得所有不重叠的子数字吗
n = 789
N = str(n)
r = len(N)
for i in range(0, r+1):
for j in range(i, r+1):
print(N[i:j])
解决方案
您可以使用itertools
import itertools
def findsubsets(s):
return [''.join([str(k) for k in i]) for j in range(len(s)) for i in itertools.combinations(s, j) if i!=()]
# Driver Code
s=789
s={int(i) for i in str(s)}
print(findsubsets(s))
更好的解决方案是:
from itertools import combinations
x = 789
y=[int(''.join(l)) for i in range(len(str(x))) for l in combinations(str(x), i+1)]
print(y)
推荐阅读
- c++ - C ++,将命令行参数传递给makefile
- python - Aiogram -- 为特定用户设置状态
- c - 为什么 argv[1] 打印大写字符?
- python-3.x - Python requests.exceptions.SSLError
- node.js - 节点负载测试返回 ETIMEDOUT / ECONNRESET
- javascript - 用javascript中的下一行替换空格
- javascript - Web Audio API 提取鼓声
- sql - 如何在 SQL 中运行“for”循环以获得一组结果而不强制转换函数?
- python - Python win32gui 获取窗口中虚拟光标的当前位置
- javascript - 如何在递归函数中调用返回 Observable 的函数?