I. 리스트(List)
for 순회 방식
1. indexing 방식
index로 순회
arr = [1, 5, 4, 7]
for i in range(4):
print(arr[i], end = '')
#1547
2. iterator 방식
값 자체를 직접 순회
파이썬에서 권장되는 방식
arr = [1, 5, 4, 7]
for num in arr:
print(num, end = '')
#1547
리스트 초기화
파이써닉(Pythonic) 하다
= 더 간결하고/ 가독성이 좋고/ 의도가 들어나는 명확함
arr = []
for i in range(6):
arr.append(0)
arr = [0] * 6 # 권장되는 방식
리스트 출력
unpacking: 여러개의 객체를 포함하고 있는 하나의 객체를 풀어줌
arr = [5, 6, 7, 8, 9]
for num in arr:
print(num, end = ' ')
print(*arr) #unpacking
# 5 6 7 8 9
리스트 역순 순회
c.f) 슬라이싱
for i in arr[::-1]
print(i, end = ' ')
리스트 컴프리핸션
컴프리핸션
패턴이 있는 list, dictionary, set을 보다 간단하게 작성
리스트 생성
# value가 0이고, 5개의 요소로 이루어진 1차원 배열
arr1 = [0] * 5
arr2 = [0 for _ in range(5)]
print(arr2) [0, 0, 0, 0, 0]
# 2차원 배열 생성
arr = [[0 for _ in range(cols)] for _ in range(rows)]
조건을 설정하여 리스트 생성
# 1부터 10까지 숫자 중 짝수만 순차적으로 들어있는 리스트 생성
arr = []
for n in range(1, 11):
if (n%2 == 0):
arr.append(n)
# 컴프리핸션 문법을 통한 방법
arr = [x for x in range(1, 10+1) if x % 2 == 0]
print(arr)
II. 함수
지역변수
- 함수 안에 만들어지는 변수
- 함수 밖에서 사용 X
전역변수
- 함수 밖에서 만든 변수
- 읽을 수만 있고, a 값을 함수 안에서 수정할 수 없음
전역변수를 수정하고 싶을 때, global 키워드
a = 100
def abc():
global a # 함수 내에서, 전역변수를 수정하고 싶을 때
a = 300
print(a) #300
def bts():
print(a) #300
abc()
bts()
Parameter vs Argument
def 함수명(매개변수):
code
return 반환값
함수명(함수인자)
III. 딕셔너리(Dictionary)
Q. 딕셔너리를 사용하는 이유?
A. 문자열, 음수 값을 index로 사용하기 위해
딕셔너리 초기화
# case 1
a = dict()
a['HI'] = 55
a['BBQ'] = 'KFC'
# case 2
a = {'HI': 55, 'BBQ': 'KFC'}
딕셔너리의 특징
가변형 비시퀀스
- 가변형 = 값이 변할 수 있음
- 비 시퀀스 = 순서가 없다
- C++에서는 Unordered_map
Q. 딕셔너리는 for문으로 어떻게 순회할까?
A. key를 기준으로 순회
for key in a:
print(key)
Counter로 활용하기
Dict 사용하여 최빈수 문자열 출력하기
arr = ['MC', 'BTS', 'BTS', 'MC', 'BTS']
# 초기화
di = dict() # {'MC': 2, 'BTS': 3}
for x in arr:
di[x] = 0
for x in arr:
di[x] += 1
mx = 0
ret = ''
# dict_items([('MC', 2), ('BTS', 3)])
for word, cnt in di.items():
if cnt > mx:
mx = cnt
ret = word
print(word)
유의사항
Key 공간을 만들어 두어야, 이후에 값을 대입할 수 있다.
값을 대입하면, 간단히 Key에 해당하는 공간을 생성할 수 있다.
arr = ['ABE', 53, -99, -99, 124]
di = dict() # 초기화
# key 값이 존재하는지 확인
# case 1)
for i in arr:
di[str(i)] = 0
for i in arr:
di[str(i)] += 1
# case2) 멤버십 연산자 활용
for i in arr:
if(i not in di):
di[i] = 0
di[i] += 1
IV. 튜플(Tuple)
내부 값을 변경할 수 없는 "단 하나의 값 덩어리"
Q. 튜플은 언제 사용할까?
A. 여러개의 값을 리턴하고 싶을 때. 튜플로 하나의 값을 리턴
a, b, c = 1, 2, 3
def func():
return a, b, c
print(func()) # (1, 2, 3) 튜플로 리턴
시퀀스 자료형
- indexing 방식으로 순회가 가능하다
- 리스트, 문자열, 튜플
Q. 리스트 vs 튜플?
A. 튜플은 수정이 불가능하다.
Tuple은 하나의 값 덩어리이므로, 내부의 값(element)를 수정할 수 없다.
따라서, (return) 값을 수정하고 싶다면, 리스트로 반환해야 한다.
def func():
return [1, 2, 3]
a = func()
print(a) # [1, 2, 3]
튜플을 쓰는 이유
1. 성능: 리스트보다 성능이 빠르다.
2. 안전성: 다른 개발자가 임의로 내부 값을 수정할 수 없어, 안전한 프로그래밍 가능
Tip
하드코딩: 수 및 데이터를 입력 없이 소스코드에 타이핑으로 적어두는 것
헷갈려서 쓰는.. 파이썬 괄호
[ ]: 리스트(List)
- 수정이 가능(mutable)
( ): 튜플(Tuple)
- 수정이 불가능(immutable)
- 여러 개의 값을 한 번에 다루기 위한 컨테이너 데이터타입 중 하나
{ }: 셋(Set)
- 집합의 형태를 쉽게 처리하기 위한 데이터타입
- 딕셔너리와 유사하나 키(key)가 없음
- 중복을 허용하지 않고 순서가 없다.
{ }: 딕셔너리(Dictionary)
- 여러 개의 값을 한 번에 다루기 위한 컨테이너 데이터타입
- key-value 쌍의 형태
- 값(value)는 수정 가능
정렬
arr = [6, 3, 9]
# 리스트 정렬
arr.sort()
print(arr) # [3, 6, 9]
# 리스트 역정렬
arr.sort(reverse=True)
print(arr) # [9, 6, 3]
'IVS > Python 프로그래밍' 카테고리의 다른 글
[Python] Class, 상속, 오버라이딩 (1) | 2024.12.20 |
---|---|
[JSON] Project1- 파이썬을 활용한 API 데이터 수집 (1) | 2024.12.18 |
[JSON] Encoding/ Decoding, JSON 파일 파싱하기 (0) | 2024.12.18 |
[JSON] 기본 문법 (2) | 2024.12.18 |
[Python] 변수, 입출력, 데이터 타입, 아스키코드 (1) | 2024.12.16 |