0%

파이썬 기본 문법_03

컬렉션 데이터 타입

컬렉션 데이터 타입에는 list, tuple, dict등이 있습니다.

리스트(list) - [ ]

"순서"가 있는 수정이 가능한 데이터 타입 입니다.

리스트 자료형의 매서드

.append( ): 리스트의 맨 뒤에 값을 추가

1
2
3
4
5
ls = [1, 5, 2, 4]
ls.append(3)
print(ls)

# 1,4,2,4,3

.sort( ) : 오름차순으로 정렬

1
2
3
4
5
6
ls.sort()
# 내림차순 정렬
ls[::-1]
ls.sort(reverse=True)

# 5,4,3,2,1

.pop( ) : 맨 뒤의 값을 떼어냄

1
2
3
4
num = ls.pop()  # 리스트 맨뒤의값 떼어내는 함수
print(num, ls)

# 1, [5,4,3,2]

깊은 복사 vs 얕은 복사

얕은 복사

1
2
3
4
5
6
ls1 = [1, 2, 3]
ls2 = ls1
print(ls1, ls2)
# [1,2,3],[1,2,3]
ls1[2] = 5
# [1,2,5],[1,2,5]

깊은 복사

1
2
3
4
5
6
7
ls3 = ls1.copy()
# 새로운 저장공간을 만들어서 ls1에 들어있던 [1,2,5]를 ls3 에 저장 : 깊은 복사
ls1, ls3
# [1,2,3],[1,2,3]
ls1[2] = 10
ls1, ls3
# [1,2,10],[1,2,5]

튜블(tuple) - ( )

순서가 있는 수정이 불가능한 데이터 타입 입니다. 튜플은 리스트 보다 같은 데이터를 가졌을때 공간을 적게 사용

1
2
3
4
5
tp1 = 1, 2, 3
tp2 = (4, 5, 6)
#괄호가 없어도 가능
print(type(tp1), type(tp2), tp1, tp2)
# <class 'tuple'>, <class 'tuple'>, (1, 2, 3), (4, 5, 6)
## Offset index
데이터에서 특정 위치의 데이터를 출력할때 사용합니다. 마스크, 혹은 마스킹 이라고도 합니다.

[idx] : idx 위치 데이터를 출력합니다. (인덱스는 0부터 시작)
[start:end] : start에서 end까지 출력(end는 미포함)
[start:end:stride] : stride만큼씩 점프하여 출력
1
2
3
4
5
6
7
8
9
g = "abcdefg"
g[2], g[-2], g[2:5], g[:2], g[3:], g[-2:], g[::3], g[::-1]

# 'c', 'f', 'cde', 'ab', 'defg', 'fg', 'adg', 'gfedcba'

numbers = "123456789" # 97531로 출력하고자 한다면
numbers[::2][::-1] # [::-1]은 역수

# 97531

딕셔너리(dict) -

순서가 없고, key : value 로 구성되어 있는 데이터 타입입니다.

1
2
3
4
5
6
7
8
# 선언 : 키는 정수(실수도 가능), 문자열 데이터 타입만 사용이 가능
dic = {
1: "one",
"two": 2,
"three": [1, 2, 3],
}
print(dic)
# {1: 'one', 'two': 2, 'three': [1, 2, 3]}

1
2
3
4
dic[1], dic["three"]  # 인덱스로는 못부름, 키를 정확히 입력해야 값을 찾을수 있음
dic["four"] = 1234 # 키로 찾아서 새로운 값을 넣어줌,혹은 새로운 키값에 밸류 추가 가능
print(dic)
# {1: 'one', 'two': 2, 'three': [1, 2, 3], 'four': 1234}

형변환

이미 변수에 설정된 데이터 타입을 변경하는 행위입니다.

1
2
3
4
5
6
a = 1
b = "2"
print(a + int(b))
print(str(a) + b)
# 3
# 12

연산자

산술연산자 : +, -, *, /, //(몫), %(나머지),

1
2
3
b = 1 + 4 / 2 ** 2
print(b)
# 2.0
할당연산자 : 변수에 누적시켜서 연산 : +=, //=, =, ...
1
2
3
4
5
6
7
a = 10
a = a + 10
a = a + 10
a += 10
a += 10
print(a)
# 50
비교연산자 : >, <, ==, !=, <=, >= : 결과로 True,False
1
2
3
4
print(a, b)
print(a < b, a == b, a != b)
# 50, 2.0
# False, True, True
논리연산자 : True,False 를 연산 : or,and,not
1
2
3
4
5
# 논리연산
True and False, True or False, not (
True or True), not True or True # 왼쪽부터 연산. 괄호안 먼저

# (False, True, False, True)
멤버연산자 : 특정 데이터가 있는지 확인할때 사용 : not in, in
1
2
3
4
5
6
# 멤버연산
ls = ["jin", "andy", "john"]
"andy" in ls # andy가 ls에 있냐?
# True
"howard" in ls # howard가 ls에 있냐?
# False
연산자 우선순위 : 산술 > 비교 > 멤버 > 논리