【问题标题】:all possible sub-digit of a given number给定数字的所有可能的子数字
【发布时间】:2021-07-04 11:36:30
【问题描述】:

我正在开发程序以获取给定数字的所有可能(重叠和非重叠)子数字。例如 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])

【问题讨论】:

    标签: python python-3.x python-2.7


    【解决方案1】:

    您可以使用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)
    

    【讨论】:

      【解决方案2】:

      N[i:j] 更改为 N[i:j+1]range(0, r+1) 更改为range(0, r)

      n = 789
      N = str(n)
      r = len(N)
      
      for i in range(0, r):
          for j in range(i, r):
              print( N[i:j+1])
      
      7
      78
      789
      8
      89
      9
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-21
        • 2015-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-27
        相关资源
        最近更新 更多