나는 문자열이 불변이므로 문자열 연결을해서는 안되므로 문자열 연결을 새로운 문자열 인스턴스로 계산 한 다음 다시 할당해야한다고 이미 몇 번 들었습니다. 식별자. O에서 실행 (N^2)for 루프 긴 문자열에서 파이썬 문자열 연결
letters = ""
for c in document:
if c.isalpha():
letters += c
좋은 : O에 실행 (N 결과는 n 개의 문자가 그래서 경우 시간 복잡도는 (N^2)
나쁜 O 것 내가 읽은 동시에)
document = ""
temp = []
for c in document:
if c.isalpha():
temp.append(c)
letters = "".join(temp)
그 t의
"일부 나중에 구현 그는 파이썬 인터프리터가 이러한 코드를 선형 시간 내에 완료 할 수 있도록 최적화를 개발했습니다. "
그래서 첫 번째 해결책도 괜찮을 것입니다. 그것은 최신 파이썬 빌드에있는 최적화입니까?
대부분의 pythonistas는 'letters =' '.join (c.isalpha()의 경우 c에 대해 c를 사용합니다.)' – wim
@StefanPochmann 죄송합니다. 문자가 루프 외부에 있어야합니다. 복사 붙여 넣기 오류. 양쪽 발췌 문장을 수정했습니다. – user1767754
@ user1767754 첫 번째 줄에는 구문 오류가 있습니다. 그리고 이상한 발언. –