본문 바로가기
파이썬

파이썬에서 문자열의 모든 연속 부분 문자열을 얻는 방법?

by º기록 2020. 12. 19.
반응형

여기에 내 코드가 있지만 더 나은 솔루션을 원합니다. 문제에 대해 어떻게 생각하십니까?

def get_all_substrings(string):
  length = len(string)
  alist = []
  for i in xrange(length):
    for j in xrange(i,length):
      alist.append(string[i:j + 1]) 
  return alist

print get_all_substring('abcde')

 

해결 방법

 

제가 생각할 수있는 유일한 개선점은 다음과 같이 목록 이해력을 사용하는 것입니다.

def get_all_substrings(input_string):
  length = len(input_string)
  return [input_string[i:j+1] for i in xrange(length) for j in xrange(i,length)]

print get_all_substrings('abcde')

너와 나의 타이밍 비교

def get_all_substrings(string):
  length = len(string)
  alist = []
  for i in xrange(length):
    for j in xrange(i,length):
      alist.append(string[i:j + 1]) 
  return alist

def get_all_substrings_1(input_string):
  length = len(input_string)
  return [input_string[i:j + 1] for i in xrange(length) for j in xrange(i,length)]

from timeit import timeit
print timeit("get_all_substrings('abcde')", "from __main__ import get_all_substrings")
# 3.33308315277
print timeit("get_all_substrings_1('abcde')", "from __main__ import get_all_substrings_1")
# 2.67816185951

 

참조 페이지 https://stackoverflow.com/questions/22469997

 

 

반응형

댓글