求字串集的所有子串,如‘abc’子串‘a’、‘b’、‘c’、‘ab’、‘bc’、‘abc’。現在有思路是對所有字串按位控制長度進行遍歷,判重后再寫入串列中。但是如果字串長度過長,數目過多,回圈次數就很多,程式運行不了。希望各位大能門給點建議,謝謝


uj5u.com熱心網友回復:
有沒有人啊
uj5u.com熱心網友回復:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Python 3.6
from itertools import accumulate
def all_sub_string(a_string):
if len(a_string) == 1:
return [a_string]
else:
return list(accumulate(a_string)) + all_sub_string(a_string[1:])
print(all_sub_string('abcde'))
uj5u.com熱心網友回復:
結果的樣子:
['a', 'ab', 'abc', 'abcd', 'abcde', 'b', 'bc', 'bcd', 'bcde', 'c', 'cd', 'cde', 'd', 'de', 'e']
uj5u.com熱心網友回復:
博主你好,我剛開始學python,學python有前途么uj5u.com熱心網友回復:
沒有,去學java或C++吧,等學精通了,回來看30分鐘python教程你就會了。
uj5u.com熱心網友回復:
完美實作uj5u.com熱心網友回復:
就是遍歷長度,然后組合就可以了,有現成的函式可用uj5u.com熱心網友回復:
str1="ABC"for num in range(1,len(str1)+1):
import itertools
for i in itertools.combinations(str1, num):
print (''.join(i))
print()
uj5u.com熱心網友回復:
import itertools
str1="ABC"
for num in range(1,len(str1)+1):
for i in itertools.combinations(str1, num):
print (''.join(i))
print()
A
B
C
AB
AC
BC
ABC
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63800.html
