seoyoung.dev

[ch06]문자열 조작 본문

TIL/Python

[ch06]문자열 조작

seo-0 2021. 7. 18. 15:27

[ 파이썬 알고리즘 인터뷰_알고리즘 스터디 리뷰 ]


* 문자열에서 문자랑 숫자만 사용하기

 1) isalnum() 으로 판별 -> bool 리턴

 2) re.sub('[^a-z0-9]'),'',s) : ^은 not 을 의미 -> a-z랑 0-9 처럼 문자나 숫자가 아닌 글자는 ''로 대체

 

* 팰린드롬인지 판별 // 앞뒤로 똑같은 문장

 1) pop(0) 이랑 pop() 비교 - 같지 않은 부분이 있으면 판단 종료

while (len(strs) > 1:
    if strs.pop(0) != strs.pop():
        print('false')

* lambda 이중조건 + sort의 정렬 기준 key

1) lambda x: ( 첫번째 조건, 두번째 조건..)

+ 조건 내에서 split() 하고 바로 사용하면 문장->단어->문장 과정 생략 가능 

letters = ['let1 art can','let2 own kit dig','let3 art zero']

letters.sort(key = lambda x:(x.split()[1:],x.split()[0]))

* 리스트 Comprehension

paragraph = "Bob hit a ball"
banned = ["hit"]

# 문자 아닌 글자는 공백 치환 / banned 에 없는 단어들만 words 에 저장 
words = [word for word in re.sub(r'[\w]',' ',paragraph).lower().split() if word not in banned ]

* Counter 객체

: Counter -> ({'ball' : 2, 'bob' : 1, ... }) 처럼 딕셔너리 형태로 단어의 출현 빈도 알 수 있다.

import collections

counter = collections.Counter(words)

counter.most_common(1)[0][0]

* 단어나 문장 sorted 

-> 구성 단일 문자 순으로 정렬, 리스트 저장

word='eat'
sorted(word)
# ['a','e','t']

* sorted 와 sort 차이

- sort() : 제자리 정렬 -> None 리턴, 원본 리스트에 영향 O, sorted 보다 빠름(복사본x)

- sorted() : 정렬된 새로운 리스트를 반환, 원본 리스트에 영향 X

'TIL > Python' 카테고리의 다른 글

[ch11]해시 테이블  (0) 2021.08.03
[ch10]데크,우선순위 큐  (0) 2021.08.03
[ch09]스택,큐  (0) 2021.07.31
[ch_08]연결리스트  (0) 2021.07.28
[ch_07]배열  (0) 2021.07.23