※ 파이썬 복습 겸 필자가 몰랐던 것 위주로 정리
람다 함수
(lambda x, y: x + y)(1,2) # 3
(lambda li: li[1])([1,2,3]) # 2
리스트 관련
elements = ["a", "b", "c"]
# 리스트 요소의 인덱스
elements.index("요소명")
# 리스트에 요소 추가
elements.append("요소")
# 리스트 맨 마지막 인덱스인 요소 추출
elements.pop(-1)
# 리스트 값으로 삭제
element.remove("a")
# set 자료형(중복이 제거된 자료형)으로 변환
set(elements) # {'a', 'b', 'c'}
# 리스트에 0 채우기
zeros = [0 for i in range(3)] # [0, 0, 0]
# 2차원 배열에 0 채울 때 유의점
zeros1 = [[0] * 3] * 3
zeros2 = [[0] * 3 for _ in range(3)]
zeros1[0][1] = 1
print(zeros1) # [[0, 1, 0], [0, 1, 0], [0, 1, 0]]
zeros2[0][1] = 1
print(zeros1) # [[0, 1, 0], [0, 0, 0], [0, 0, 0]]
# 리스트 깊은 복사
new_elements = elements[:]
# 리스트 슬라이싱 [start:end:step]
new_elements = elements[0:1:1] # ['a']
리스트 요소의 인덱스까지 접근할 수 있는 enumerate() 함수
for idx, element in enumerate(elements):
print(idx, element)
리스트의 모든 요소에 함수를 처리하는 map() 함수
elements = [1.1, 2.1, 3.1]
print(list(map(int, elements))) # [1, 2, 3]
def plus_one(n):
return n + 1
print(list(map(plus_one, elements))) # [2.1, 3.1, 4.1]
리스트를 정렬하는 sort() 함수
리스트 자체를 정렬하는 함수로, 리스트.sort() 의 형태로 사용한다.
정렬된 리스트를 새로 반환하고 싶다면 sorted(리스트) 를 사용한다.
elements = [[1, 4], [2, 3], [3, 5], [4, 6], [5, 7]]
# x[1]을 기준으로 오름차순으로 정렬, x[1]이 같다면 x[0]을 기준으로 하여 정렬
elements.sort(key=lambda x : (x[1], x[0])) # [[2, 3], [1, 4], [3, 5], [4, 6], [5, 7]]
pop()을 사용할 때 리스트보다 내부 연산에서 효율적인 deque 자료구조(결과는 같음)
pop(0)을 했을 때 인덱스가 전부 밀리는 list와 달리 deque의 popleft(0)는 가리키는 포인터만 바뀌므로 효율적.
from collections import deque
elements = deque(elements)
elements.popleft() # elements.pop(0) 과 같은 결과.
딕셔너리 관련 함수
# 딕셔너리 기본적인 형태
student = {"name": "kim", "grade": "A"}
# 딕셔너리 요소 조회
student.get("name", 0) # name이라는 key가 있으면 "kim", 없으면 0
student["name"] # name이라는 key가 있으면 "kim", 없으면 오류
# 딕셔너리에 요소 추가
student["age"] = 17
# 딕셔너리 요소 삭제
del student["grade"]
# 딕셔너리 key를 모은 리스트 생성
list(student.keys()) # value의 경우는 student.values()
# 딕셔너리 모든 요소 초기화
student.clear()
# 딕셔너리에 0 채우기
names = ["kim", "lee", "park"]
dic = {i: 0 for i in names}
판별 함수
a = "1234"
b = "3²"
c = "½"
a.isdecimal() -> True, isdecimal은 a만 True
isdigit() -> a, b는 True. (숫자 형태로 된 것들은 True)
isnumeric() -> a, b, c 모두 True
반복문 관련
파이썬에선 for, while 같은 반복문에도 else를 쓸 수 있다.
break로 도중에 중단되지 않고 정상적으로 끝까지 루프가 종료됐다면 else를 탐.
for e in elements:
if e == 3:
break;
else:
print("elements라는 리스트 안에 3은 없습니다")
아스키 코드
print(chr(65)) // 'A'
print(ord("A")) // 65
'IT > Python' 카테고리의 다른 글
[Python] 지역변수와 전역변수 (0) | 2024.01.18 |
---|---|
[Python] 최소힙(heap) 자료구조 (1) | 2024.01.08 |
[알고리즘 공부] 그리디(Greedy) 알고리즘 (1) | 2023.10.31 |
[알고리즘 공부] 큐(Queue) (0) | 2023.10.30 |
[알고리즘 공부] 스택(Stack) (0) | 2023.10.22 |