파이썬 주요 문법 정리
체감상 백준의 브론즈 1문제 이상은 리스트와 배열을 잘 다루어야 하는 부분이 많아진다고 생각한다. 이 부분은 나중가서도 주요한 알고리즘 문제의 해결방안이 되기 때문에 잘 익혀두어야 하는 부분인데, 익숙치 않아 아이디어를 떠올리고 활용하는 것이 쉽지 않다.
따라서, 파이썬의 주요 문법을 톺아볼 것이다.
리스트
리스트 항목 값 변경
- 인덱스 시작점은 0
- 해당되는 인덱스 번호에 원하는 값 매칭
x = [1, 2, 3, 4]
print(x)
x[2] = 5
print(x)
x[0] = 0
print(x)
'''
#출력결과
[1, 2, 3, 4]
[1, 2, 5, 4]
[0, 2, 5, 4]
'''
리스트 요소 출력
- 반복문에서의 문법 활용 방식
- range()는 익숙하나 in구문은 조금 미숙하다
a = [1, 2, 3]
#요소 개수 대입
for i in range(3):
print(a[i])
#리스트 길이만큼 순회
for i in range(len(a)):
print(a[i])
#리스트 자체 탐색
for k in [1, 2, 3]:
print(k)
#변수명 활용
for k in a:
print(k)
#if '키워드' in 리스트
a = ['orange', 'apple', 'banana']
if 'apple' in a:
print("사과")
리스트 메소드
- append(값): 해당 값을 리스트 맨 끝에 추가
- insert(인덱스, 값): 해당 인덱스 번호에 값 추가
- extend(리스트): 리스트 뒤에 리스트 붙이기
- index(값): 값에 해당하는 인덱스 번호 리턴
- count(값): 해당 값의 개수 리턴
- pop(인덱스): 해당 인덱스 데이터 삭제
- remove(값):해당 값 삭제
- clear():리스트 전체 삭제
a = list()
a.append(10)
print(a)
#[10]
a.insert(1, 30)
print(a)
#[10, 30]
a.extend([50, 60])
print(a)
#[10, 30, 50, 60]
print(a.index(30))
#1
print(a.count(10))
#1
a.remove(10)
print(a)
#[30, 50, 60]
a.pop(2)
print(a)
#[30, 50]
a.clear()
print(a)
#[]
자주 사용하는 함수
- min(리스트): 리스트 항목값 중 가장 작은 값
- max(리스트): 리스트 항목 값 중 가장 큰 값
- sum(리스트): 리스트 항목값의 합
- len(리스트): 리스트 항목 개수
- map(함수, 리스트): 리스트 항목값에 함수 적용 -> 리스트 항목값에 일괄적으로 함수를 적용해 그 결과를 반환, 돌려 받는 값은 리스트가 아니므로 리스트로 변환해야함
a = [10, 20, 30]
print(min(a), max(a), sum(a), len(a))
#10 30 60 3
b = ['11', '12', '13']
b2 = map(int, b)
print(b2)
b2 = list(b2)
print(b2)
'''
#출력결과
<map object at 0x0000020B9B3A83D0>
[11, 12, 13]
★리스트 컴프리헨션(표현식)
- 숏코딩에 유리한 파이썬의 장점을 극대화 시켜주는 요인 중 하나로 작용
- 익숙하지 않은 부분 중 하나이므로 연습 필요
- [값 for 변수 in range(반복범위)]
- list(값 for 변수 in range(반복범위)]
- [식 for 변수 in range(반복범위)]
- list(변수 for 변수 in range(반복범위)]
a = [0 for _ in range(5)]
print(a)
#[0, 0, 0, 0, 0]
a = [0 for i in range(5)]
print(a)
#[0, 0, 0, 0, 0]
a = [0]*5
print(a)
#[0, 0, 0, 0, 0]
a = [i for i in range(5)]
print(a)
#[0, 1, 2, 3, 4]
'''
#같은 구문
a = []
for i in range(5):
a.append(i)
'''
a = [str(i+10) for i in range(5)]
print(a)
#['10', '11', '12', '13', '14']
a = list(i for i in range(3, 10, 2)]
print(a)
#[3, 5, 7, 9]
딕셔너리
- 키(key): 문자열, 정수형, 실수형, 튜플 등
(리스트) - 값(value): 문자열, 정수형, 실수형, 튜플, 리스트 등 모든 데이터 타입 가능
a = {}
b = {1:"사과", 2:"바나나", 3:"딸기"}
c = {"1반":23, "2반":20}
딕셔너리 항목 접근과 변경
- key:value 매칭
m = {"1반":30, "2반":50, "3반":40, "4반": 10}
print(m["1반"])
for i in m:
print(i, ":", m[i])
m["3반"]= 25
print(m)
'''
#출력결과
30
1반 : 30
2반 : 50
3반 : 40
4반 : 10
{'1반': 30, '2반': 50, '3반': 25, '4반': 10}
'''
딕셔너리 관련 함수, 메소드
- dict(): 딕셔너리로 리턴
- keys(): 딕셔너리의 키들을 리턴
- values(): 딕셔너리의 값들을 리턴
- items(): 딕셔너리의 키와 값의 쌍을 리턴
m2 = {"A":10, "B":11, "C":12}
print(m2)
#{"A":10, "B":11, "C":12}
m3 = dict(A=2, B=3, C=4)
print(m3)
#{"A":2, "B":3, "C":4}
m4 = dict(A반=8, B반=9, C반=10)
print(m4)
#{"A":8, "B":9, "C":10}
m = {"1반":27, "2반":28, "3반":27}
print(m.keys()) #dict_keys(['1반', '2반', '3반'])
print(m.values()) #dict_keys([27, 28, 40])
print(m.items()) #dict_keys([('1반', 27), ('2반', 28), ('3반', 40)])
chg_list1 = list(m.values())
print(chg_list1)
#[27, 28, 40]
chg_list2 = list(m.keys())
print(chg_list2)
#['1반', '2반', '3반']
chg_list3 = list(m.items())
print(chg_list3)
#[('1반', 27), ('2반', 28), ('3반', 40)]
정렬
- a.sort(): 오름차순, 리스트 순서 자체를 바꿈[메소드]
- a.sort(reverse = True): 내림차순, 리스트 순서 자체를 바꿈[메소드]
- a.reverse(): 역순, 리스트 순서 자체를 바꿈[메소드]
- sorted(a): 오름차순, 리스트 자체의 순서를 바꾸지 않음[함수]
- reversed(a): 역순, 리스트 자체의 순서를 바꾸지 않음[함수]
a = [3, 5, 1, 9, 2]
#a.sort(): 오름차순, 리스트 순서 자체를 바꿈[메소드]
a.sort()
print(a) #[1, 2, 3, 5, 9]
#a.sort(reverse = True): 내림차순, 리스트 순서 자체를 바꿈[메소드]
a.sort(reverse = True)
print(a) #[9, 5, 3, 2, 1]
#a.reverse(): 역순, 리스트 순서 자체를 바꿈[메소드]
a.reverse()
print(a) #[2, 9, 1, 5, 3]
#sorted(a): 오름차순, 리스트 자체의 순서를 바꾸지 않음[함수]
print(sorted(a)) #[1, 2, 3, 5, 9]
print(a) [3, 5, 1, 9, 2]
#reversed(a): 역순, 리스트 자체의 순서를 바꾸지 않음[함수]
print(reversed(a)) #[2, 9, 1, 5, 3]
print(list(reversed(a)) #<list_reversiterator object at 0x033A4790>
print(a) #[3, 5, 1, 9, 2]
★enumerate 함수
- (인덱스, 항목값) 튜플 형태로 반환
x = ['a', 'b', 'c']
y = list(enumerate(x))
print(y)
[(0, 'a'), (1, 'b'), (2, 'c')]
for i,v in enumerate(x):
print(i, v)
'''
#출력결과
0 a
1 b
2 c
'''
zip 함수
- 두 개 리스트를 하나로 묶음
- 인덱스가 같은 항목값을 쌍으로 튜플 형태로 반환
x = [1, 2, 3]
y = [4, 5, 6]
z = list(zip(x, y))
print(z) #[(1, 4), (2, 5), (3, 6)]
for a, b, in zip(x, y):
print(a, b)
'''
#출력결과
1 4
2 5
3 6
'''