python algorithm

Python 기본 Method 및 함수 정리

문과 열등생 2024. 2. 17. 21:30

1. 리스트 요소 추가

# .insert() : 특정 위치에 특정 element 추가

a = [1, 2, 3]
a.insert(1, 10)
	# index = 1에 10 추가
print(a)
	# [1, 10, 2, 3]

# .append() : 리스트 마지막에 한 개의 element 추가

a = [1, 2, 3]
a.append(10)
	# 마지막 index에 10 추가
print(a)
	# [1, 2, 3, 10]

# .extend() : 리스트 마지막에 sequential elements 추가

a = [1, 2, 3]
add_list = ['a', 'b', 'c']
a.extend(add_list)
	# 마지막 index에 add_list elements 추가
print(a)
	# [1, 2, 3, 'a', 'b', 'c']

 

2. 리스트 요소 삭제

# .clear() : 리스트의 모든 내용 삭제

a = [1, 2, 3]
a.clear()
print(a)
	# []

# .remove() : 리스트의 특정 element 삭제 / 동일한 값이 있을 때는 index가 가장 낮은 값 제거

a = [1, 2, 3]
a.remove(2)
print(a)
	# [1, 3]

# filter(function, iterable) : 주어진 function으로 iterable을 필터링

numbers = [-2, -1, 0, 1, 2, 3, 4, 5]
positive_numbers = list(filter(lambda x: x > 0, numbers))
	# numbers에서 lambda 함수를 만족하는 값을 filtering 해서 list로 반환
print(positive_numbers)
	# 출력: [1, 2, 3, 4, 5]

# del() : 리스트의 특정 위치의 element 삭제

a = [1, 2, 3, 4, 5]
del(a[1])
print(a)
	# [1, 3, 4, 5]
del(a[1:3])
print(a)
	# [1]

# .pop() : 리스트의 위치의 element를 출력한 다음 삭제 (default = -1)

a = [1, 2, 3, 4, 5]
a.pop()
	# 5
print(a)
	# [1, 2, 3, 4]

 

3. 분리 및 연결, 검색

# .split(sep, maxsplit) : 특정 element를 중심으로 리스트로 분리

  • sep : 분리의 구분자, default는 공백
  • maxsplit : 최대 분할 횟수, default = -1로, 가능한 모든 분할 수행
a = 'ainow@tistory'
a.split('@')
print(a)
	# ['ainow', 'tistory']

.splitness(keepends) : 문자열을 개행 문자를 기준으로 분리

  • keepends : True일 경우 개행문자를 결과에 포함 
text = "line 1\nline 2\r\nline 3"
result = text.splitlines()
print(result)
	# ['line 1', 'line 2', 'line 3']

result_with_ends = text.splitlines(keepends=True)
print(result_with_ends)
	# ['line 1\n', 'line 2\r\n', 'line 3']

# .strip([chars]) / .lstrip() / .rstrip() : 양 끝의 개행 문자 혹은 특정 문자열을 제거하여 반환

text = "---Hello, World!---"
stripped_text = text.strip('-')
print(stripped_text)
	# "Hello, World!"

# .join() : 주어진 문자열을 연결

# CASE 1
delimiter = '-'
my_list = ['apple', 'banana', 'orange']

result = delimiter.join(my_list)
print(result)
	# 'apple-banana-orange'
    
# CASE2
my_list = ['p','y','t','h','o', 'n']
print(''.joint(my_list))
	# 'python'

# .index(sub, start, end) : 리스트의 특정 element의 index 반환

  • 'sub' element가 start index에서 end index 내에서 어디에 있는지 반환
  • start만 있으면 start 지점부터 끝까지,
  • end만 있으면 처음부터 end 지점까지.
a = [1, 2, 3, 4, 5]
print(a.index(3))
	# 2

 

4. 정렬

# .sort(key, reverse) : 리스트를 정렬 / 원래의 리스트를 정렬된 리스트로 변환

  • 새로운 리스트를 생성하지 않음
  • key= : 정렬에 사용할 키 함수
  • reverse= : 내림차순 정렬 여부
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
my_list.sort()
print(my_list)
	# [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

# sorted(key, reverse) : 리스트를 정렬 / 원래의 리스트를 정렬된 리스트로 변환하지 않음

  • 새로운 리스트 생성
  • key= : 정렬에 사용할 키 함수
  • reverse= : 내림차순 정렬 여부
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = sorted(my_list)
print(sorted_list)
	# [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
print(my_list)
	# [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

# list(set(my_list)) : 리스트에 중복된 값을 제거하고 정

my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
result = list(set(my_list))

print(result)
	# 순서가 없는 중복 제거된 set: [1, 2, 3, 4, 5, 6, 9]
	# list() 함수를 사용하여 변환하면서 정렬: [1, 2, 3, 4, 5, 6, 9]

 

5. 대소문자

# .capitalize() : 문자의 첫글자만 대문자로 변환 

text = "hello world"
result = text.capitalize()
print(result)
	# "Hello world"

# .upper() : 모든 문자를 대문자로 변환

text = "hello world"
result = text.upper()
print(result)
	# "HELLO WORLD"

# .lower() : 모든 문자를 소문자로 변환

text = "Hello World"
result = text.lower()
print(result)
	# "hello world"

# .casefold() : 문자열을 소문자로 변환하는 method로, 문자열 비교시 사용에 유용

text = "Hello World"
result = text.casefold()
print(result)
	# "hello world"

 

6. 기타

# eval() : 문자열로 표현된 표현식을 실행하여 결과를 반환하는 함수

# 수학적인 표현식을 문자열로 표현하고 eval()로 실행
result = eval("3 + 5 * 2")
print(result)
	# 13

# 변수와 함수를 포함한 파이썬 코드를 문자열로 표현하고 eval()로 실행
x = 10
y = 20
code = "x + y"
result = eval(code)
print(result)
	# 30

# .center(width, fillchar) : 문자열을 형식에 맞게 중앙 정렬

text = "Hello"
centered_text = text.center(10, '-')
print(centered_text)
	# "--Hello---"

# .ljust(width, fillchar) : 문자열을 형식에 맞게 왼쪽 정렬

text = "Hello"
left_aligned_text = text.ljust(10, '*')
print(left_aligned_text)
	# "Hello*****"

# .rjust(width, fillchar) : 문자열을 형식에 맞게 오른쪽 정렬

text = "Hello"
right_aligned_text = text.rjust(10, '#')
print(right_aligned_text)
	# "#####Hello"

# .count(sub, start, end) : start index와 end index 사이에 있는 문자열 sub와 동일한 부분 문자의 갯수 반환

text = "abababab"
count_1 = text.count("ab")
print(count_1)
	# 4 (전체 문자열에서 "ab"가 4번 등장)

count_2 = text.count("ab", 2)
print(count_2)
	# 3 (인덱스 2 이후부터의 문자열에서 "ab"가 3번 등장)

count_3 = text.count("ab", 2, 6)
print(count_3)
	# 2 (인덱스 2부터 5까지의 부분 문자열에서 "ab"가 2번 등장)