본문 바로가기
개발 공부 일지/Python

배열과 문자열 처리하기

by yelimu 2024. 6. 20.

 

리스트list 관련 메서드

 

  • append(item): 리스트의 끝에 요소를 추가합니다.
  • extend(iterable): 리스트에 iterable(반복 가능한 객체)의 모든 요소를 추가합니다.
  • insert(index, item): 리스트의 지정된 인덱스에 요소를 삽입합니다.
  • remove(item): 리스트에서 첫 번째로 나오는 지정된 값의 요소를 제거합니다.
  • pop(index=-1): 리스트에서 지정된 인덱스에 있는 요소를 제거하고 반환합니다. 인덱스를 지정하지 않으면 마지막 요소를 제거하고 반환합니다.
  • clear(): 리스트의 모든 요소를 제거합니다.
  • index(item, start=0, end=len(lst)): 리스트에서 지정된 값 item의 첫 번째 인덱스를 반환합니다.
  • count(item): 리스트에서 지정된 값 item의 출현 횟수를 반환합니다.
  • sort(key=None, reverse=False): 리스트의 요소를 정렬합니다. key는 정렬 기준을 지정하는 함수를 받습니다. reverse가 True면 내림차순으로 정렬합니다.
  • reverse(): 리스트의 요소 순서를 뒤집습니다.
  • copy(): 리스트의 얕은 복사본을 반환합니다.

그 외 리스트에 사용 가능한 .. 

 

1) 인덱싱 indexing : 리스트의 특정 위치 = 인덱스 에 있는 요소에 접근하는 방법 

인덱스는 0부터 시작, 맨 뒤 요소는 -1 

my_list = [10, 20, 30, 40, 50]

 

print(my_list[0]) # 10

print(my_list(-1)] # 50 

 

2)슬라이싱 slicing : 리스트의 일부분을 잘라내는 방법

list[start:end:step] 

print(my_list[a:b] # 인덱스 a ~  b-1 까지 반환 a, b 생략 가능 (a부터 ~ 끝, 처음~ b-1까지)

print(my_list[::2]) # 2칸씩 건너뛰기 [10, 30, 50]

print(my_list[::-1]) # 리스트 역순 [50, 40, 30, 20, 10]

 

3) 반복 iteration : 각 요소에 차례로 접근하는 방법, 반복문 사용 

for i in my_list:

    print(i)  

또는

for i, value in enumerate(my_list):

    print(f"{i}, {value}) 

 

while 써도 가넝 ~ 

 


문자열string 클래스 메서드  ... 엄청나게 많은데 사람들은 이거 다 어케 알고 어ㅋㅔ 쓰는걸까?..ㅜ

 

1. split(sep, maxsplit) : 문자열을 구분자 sep 를 기준으로 분리하여 리스트로 반환

 

sentence = "Hello, world!"
words = sentence.split(',')
print(words)  # 출력: ['Hello', ' world!']

 

2. strip(chars=None) : 문자열의 양쪽 끝에 지정된 문자 chars 를 제거

 

text = "   hello    "
clean_text = text.strip()
print(clean_text)  # 출력: 'hello'

 

3. join(iterable) : 문자열 리스트나 튜플 등의 iterable 객체의 각 요소를 이어붙여 하나의 문자열로 만든다

 

words = ['Hello', 'world', '!']
joined_string = ' '.join(words)
print(joined_string)  # 출력: 'Hello world !'

 

4. find(sub[, start[, end]]) : 부분 문자열 'sub'의 첫번째 등장 위치(인덱스)를 반환하며, 없으면 -1을 반환 

 

sentence = "Hello, world!"
index = sentence.find('world')
print(index)  # 출력: 7

 

 

  • capitalize(): 문자열의 첫 글자를 대문자로 변환합니다.
  • casefold(): 문자열을 소문자로 변환합니다. lower()와 비슷하지만 유니코드 문자열에서 더 많은 변환을 수행합니다.
  • center(width, fillchar=' '): 문자열을 지정된 너비 width 안에 가운데 정렬하고 주어진 fillchar로 여백을 채웁니다.
  • count(substring, start=0, end=len(string)): 문자열에서 부분 문자열 substring의 출현 횟수를 반환합니다.
  • encode(encoding='utf-8', errors='strict'): 문자열을 지정된 인코딩 방식으로 인코딩합니다.
  • endswith(suffix, start=0, end=len(string)): 문자열이 특정 접미사 suffix로 끝나는지 여부를 반환합니다.
  • expandtabs(tabsize=8): 문자열 내의 탭(\t) 문자를 지정된 탭 크기 tabsize에 맞춰 공백으로 치환합니다.
  • find(substring, start=0, end=len(string)): 문자열에서 부분 문자열 substring의 첫 번째 위치를 반환합니다.
  • format(*args, **kwargs): 문자열의 포맷을 지정하여 문자열을 생성합니다.
  • format_map(mapping): 문자열의 포맷을 지정하는데 사용할 매핑(mapping)을 적용하여 문자열을 생성합니다.
  • index(substring, start=0, end=len(string)): 문자열에서 부분 문자열 substring의 첫 번째 위치를 반환합니다. find()와 유사하지만 부분 문자열이 없을 경우 ValueError를 발생시킵니다.
  • isalnum(): 문자열이 알파벳 문자 또는 숫자로만 구성되어 있는지 여부를 반환합니다.
  • isalpha(): 문자열이 알파벳 문자로만 구성되어 있는지 여부를 반환합니다.
  • isascii(): 문자열이 ASCII 문자로만 구성되어 있는지 여부를 반환합니다.
  • isdecimal(): 문자열이 10진수 숫자로만 구성되어 있는지 여부를 반환합니다.
  • isdigit(): 문자열이 숫자로만 구성되어 있는지 여부를 반환합니다.
  • isidentifier(): 문자열이 파이썬 식별자로 사용될 수 있는지 여부를 반환합니다.
  • islower(): 문자열이 모든 알파벳 문자가 소문자인지 여부를 반환합니다.
  • isnumeric(): 문자열이 수치 문자로만 구성되어 있는지 여부를 반환합니다.
  • isprintable(): 문자열이 인쇄 가능한 문자로만 구성되어 있는지 여부를 반환합니다.
  • isspace(): 문자열이 모든 문자가 공백 문자인지 여부를 반환합니다.
  • istitle(): 문자열이 타이틀 케이스(각 단어의 첫 글자가 대문자이고 나머지는 소문자인 경우)로 구성되어 있는지 여부를 반환합니다. 예를 들어, "Hello World"는 타이틀 케이스로 구성되어 있으므로 True를 반환합니다.
  • isupper(): 문자열이 모든 알파벳 문자가 대문자인지 여부를 반환합니다.
  • join(iterable): iterable(반복 가능한 객체)의 각 요소를 문자열 사이에 구분자로 삽입하여 하나의 문자열로 연결합니다.
  • ljust(width, fillchar=' '): 문자열을 왼쪽으로 정렬하고, 지정된 너비 width에 맞추기 위해 주어진 문자 fillchar로 남은 공간을 채웁니다.
  • lower(): 문자열의 모든 알파벳 문자를 소문자로 변환합니다.
  • lstrip(chars=None): 문자열의 왼쪽(시작 부분)에서 주어진 문자 chars를 제거합니다. 기본값은 공백입니다.
  • maketrans(x, y=None, z=None, /): 변환 테이블을 생성합니다. translate() 메서드와 함께 사용하여 문자열의 문자를 다른 문자로 변환할 때 유용합니다.
  • partition(sep): 문자열을 sep 기준으로 세 부분으로 나눕니다: sep 이전의 문자열, sep 자체, sep 이후의 문자열. sep이 문자열 내에 없을 경우에는 원본 문자열과 빈 문자열 두 개로 분할됩니다.
  • removeprefix(prefix): 문자열이 지정된 접두사 prefix로 시작하는 경우, 해당 접두사를 제거한 문자열을 반환합니다. Python 3.9부터 추가된 메서드입니다.
  • removesuffix(suffix): 문자열이 지정된 접미사 suffix로 끝나는 경우, 해당 접미사를 제거한 문자열을 반환합니다. Python 3.9부터 추가된 메서드입니다.
  • replace(old, new, count=-1): 문자열에서 old 문자열을 new 문자열로 치환합니다. 기본적으로 모든 발생을 변경하지만 count를 사용하여 변경할 수 있는 수를 제한할 수 있습니다.
  • rfind(sub, start=0, end=len(string)): 문자열에서 부분 문자열 sub의 마지막 발생을 찾아 해당 인덱스를 반환합니다. 발생하지 않으면 -1을 반환합니다.
  • rindex(sub, start=0, end=len(string)): rfind()와 유사하지만 부분 문자열 sub의 마지막 발생을 찾지 못할 경우 ValueError를 발생시킵니다.
  • rjust(width, fillchar=' '): 문자열을 오른쪽으로 정렬하고, 지정된 너비 width에 맞추기 위해 주어진 문자 fillchar로 남은 공간을 채웁니다.
  • rpartition(sep): 문자열을 sep 기준으로 오른쪽에서 세 부분으로 나눕니다: sep 이전의 문자열, sep 자체, sep 이후의 문자열.
  • rsplit(sep=None, maxsplit=-1): 문자열을 오른쪽에서부터 sep 기준으로 최대 maxsplit 번 분할하여 리스트로 반환합니다.
  • rstrip(chars=None): 문자열의 오른쪽(끝 부분)에서 주어진 문자 chars를 제거합니다. 기본값은 공백입니다.
  • split(sep=None, maxsplit=-1): 문자열을 sep 기준으로 최대 maxsplit 번 분할하여 리스트로 반환합니다.
  • splitlines(keepends=False): 문자열을 라인별로 분할하여 각 라인을 리스트의 요소로 반환합니다.
  • startswith(prefix, start=0, end=len(string)): 문자열이 지정된 접두사 prefix로 시작하는지 여부를 반환합니다.
  • strip(chars=None): 문자열의 양쪽(시작과 끝 부분)에서 주어진 문자 chars를 제거합니다. 기본값은 공백입니다.
  • swapcase(): 문자열의 대소문자를 반전시킵니다.
  • title(): 문자열의 각 단어의 첫 글자를 대문자로 변환합니다.
  • translate(table): maketrans() 메서드로 생성된 변환 테이블을 사용하여 문자열을 변환합니다.
  • upper(): 문자열의 모든 알파벳 문자를 대문자로 변환합니다.
  • zfill(width): 문자열의 왼쪽에 0을 채워서 지정된 너비 width에 맞춥니다.

샤라웃 투 지피티 

 


+ str 의 메서드 조회하기

print(dir(str)) 

 

'__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', 
'__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'

 

이중 언더스코어('__') 로 둘러싸인 메서드들은 매직/스페셜 메서드라고 하며 직접 호출해서 사용하는 경우는 적다. 

파이썬 인터프리터가 내부적으로 호출하거나, 특정 연산자나 내장 함수가 이들을 자동으로 호출하여 객체의 동작을 지정하는 데 사용

obj1 + obj2 연산은 obj1.__add__(obj2)로 자동 변환되어 MyClass의 인스턴스를 반환하는 방식으로 동작.

따라서 보통은 이러한 매직 메서드들을 직접 호출하지 않고, 연산자나 내장 함수를 통해 간접적으로 사용