한 개의 데이터를 저장하기 위해 사용. 변수를 사용하면 숫자를 직접 적지 않고 의미 단위로 작성이 가능하며, 가독성이 증가, 코드 수정이 용이해짐 (추상화)
# 변수를 할당할 때는 문자(열)와 숫자를 넣을 수 있음.
practice = '연습만이 살 길'
practice_1 = 10000000
# 같은 값은 동시에 할당도 가능
practice = practice_1 = 100
# 다른 값을 동시에 할당도 가능
practice, practice_1 = 200, 300
# 방법 1
x, y = 10, 20
tmp = x
x = y
y = tmp
print(x, y) # 20, 10
# 방법 2 (파이썬만 가능)
x, y = 1, 2
x, y = y, x
print(x, y) # 2, 1
import keyword
print(keyword.kwlist)
# ['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async',
#'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
#'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal',
#'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
기본적인 사칙 연산 및 수식 계산
: 모든 문자는 str타입
print('hello") # (X) 작은 따옴표와 큰 따옴표를 혼용하면 안됨
print('hello')
print("hello") # 한 소스코드 내에서는 하나의 문장부호로 통일 할 것.
print('문자열 내에서 "문자열" 생성')
print("문자열 내에서 '문자열' 생성")
print('''
여러 줄을 만드는 경우 \n
삼중따옴표(\'\'\' 또는 \"\"\")를 이용하면 편리
''')
예약 문자 | 내용(의미) |
---|---|
\n | 줄 바꿈 |
\t | 탭 |
\r | 캐리지 리턴 |
\0 | 널(Null) |
\ | \ |
\’ | 단일인용부호(’) |
\“ | 이중인용부호(”) |
print('철수\'안녕\'') # 철수'안녕'
print('엔터. \n 그리고 탭\t')
#탭 , 엔터
#내용
# 덧셈
print('a'+'b') # ab
# 곱셈
print('a'*3)
# 1. str.format()
name='kim'
score=0.1
print('{}님의 점수는 {}'.format(name, score))
# 2. f-strings : python 3.6+
name='kim'
score=0.1
print(f'{name}님의 점수는 {score}')
print(3.2 - 2.1) # 0.10000000000000009
print(1.2 - 1.1) # 0.09999999999999987
# 연산의 결과가 0.1이 아님
매우 작은 수보다 작은지를 확인하거나 math 모듈 활용
a = 3.2 - 3.1 # 0.10000000000000009
b = 1.2 - 1.1 # 0.09999999999999987
# 1. 임의의 작은 수 활용
print(abs(a-b) <= 1e-10) # True
# 2. python 3.5 이상
import math
print(math.isclose(a,b)) # True
: 여러 개의 값(데이터)을 담을 수 있는 것(객체)으로,
서로 다른 자료형을 저장할 수 있음 (파이썬만의 특징)
: 여러 개의 데이터를 순서가 있는 구조로 저장하고 싶을 때 사용.
요소를 추가하거나 삭제, 편집이 가능(mutable)
```python
Array = list()
Array_1 = []
print(type(Array)) # <class 'list'>
print(type(Array_1)) # <class 'list'>
```
```python
li=[1,2,3,4,5]
print(li[0]) # 1
print(li[1]) # 2
print(li[5]) # 4
```
```python
Array=['과자', '빵']
Array.append('아이스크림')
Array[3]='사과'
print(Array[2]) # '아이스크림'
Array[0]='수박'
print(Array) # ['수박', '빵', '아이스크림', '사과']
```
: 리스트와 비슷하지만 한 번 선언 시 값을 수정을 할 수 없음. (불변형)
```python
tuple1 = (1, 2, 3) # 튜플 선언됨
print(tuple(3, 4, 5)) # (3, 4, 5)
tuple1[1]=2 # TypeError : 'tuple' object does not support item assignment
# 튜플은 수정이 불가능하기 때문에 오류 방생
```
단일 항목의 경우
복수 항목의 경우
- 마지막 항목에 붙은 쉼표는 없어도 되지만, 넣는 것을 권장(Trailing comma)
tuple_a = (1,)
print(tuple_a) # (1,)
print(type(tuple_a)) #<class 'tuple'>
tuple_b = (1, 2, 3,)
print(tuple_b) # (1, 2, 3)
print(type(tuple_b)) #<class 'tuple'>
a = 1,
print(a) # (1,)
print(type(a)) # <class 'tuple'>
b = 1, 2, 3
print(b) # (1, 2, 3)
print(type(b)) #<class 'tuple'>
```python
x, y = 1, 2
print(x, y) # 1, 2
#실제로 튜플로 처리
x, y = (1, 2)
print(x, y) # 1, 2
```
숫자의 시퀀슬르 나타내기 위해 사용하며, 주로 반복문과 함께 사용됨
# 기본형 : range(n) => 0 ~ n-1까지
print(list(range(4))) # [0, 1, 2, 3]
# 범위 지정 : range(n, m) => n ~ m-1까지
print(list(range(1,6))) # [1, 2, 3, 4, 5]
# 스텝 지정 : range(n, m, s) => n ~ m-1까지 s만큼 증가
print(list(range(1,6,2))) # [1, 3, 5]
print(list(range(6,1,-1))) # [6, 5, 4, 3, 2]
print(list(range(6,1,-2))) # [6, 4, 2]
: 시퀀스의 인덱스와 콜론을 사용하여 문자열의 특정 부분만 잘라내는게 가능
슬라이싱을 이용하여 문자열을 나타낼 때 콜론을 기준으로 앞 인덱스에 해당하는 문자는 포함되지만 뒤 인덱스에 해당 문자는 미포함
# 리스트[1:4]에서 1은 포함, 4는 미포함
print([1, 2, 3, 5][1:4]) # [2, 3, 5]
# 튜플
print((1, 2, 3)[:2]) # (1, 2)
# range
print(range(10)[5:8]) # range(5, 8)
# 문자열
print('abcd'[2:4]) # cd
# 스텝 지정
print([1, 2, 3, 5][0:4:2]) # [1, 3]
print((1, 2, 3, 5)[0:4:2]) # (1, 3)
print(range(10)[1:5:2]) # range(1, 5, 2)
print('abcded'[1:4:2]) # bd
# 생략
print([1, 2, 3, 4, 5][::2]) # [1, 3, 5]
print([1, 2, 3, 4, 5][2:]) # [3, 4, 5]
Set이란 중복되는 요소가 없이, 순서에 상관없는 데이터들의 묶음
Set의 생성
# 중괄호{} 또는 set()을 통해 생성. 빈 셋을 만들기 위해서는 반드시 set() 사용
print({1, 2, 3, 4}) #{1, 2, 3, 4}
print(type({1, 2, 3, 4})) # <class 'set'>
# 빈 중괄호는 Dictionary
blank = {}
print(type(blank)) # <class 'dict'>
blank_set = set()
print(type(blank_set)) # <class 'set'>
#set은 순서가 없는 비시퀀스형으로, 인덱스 접근 불가
print({1, 2, 3}[0]) # TypeError: 'set' object is no subscriptable
# 요소 개수
my_list = ['가', '나', '다', '가', '나']
print(len(set(my_list))) # 3
# my_list를 set로 변환 후 개수를 셈
# set을 사용하는 순간 중복 요소는 제거됨
a_set = {1, 2, 3, 4}
b_set = {1, 2, 3, 'hello', (1,2,3)}
print(a_set | b_set) # {1,2,3,4, (1,2,3), 'hello'}
print(a_set & b_set) # {1, 2, 3}
print(a_set - b_set) # {(1,2,3), 'hello'}
print(a_set ^ b_set) # {'hello', 4, (1,2,3)}
연산자 | 기호 |
---|---|
합집합 | |
교집합 | & |
차집합 | - |
대칭차집합 | ^ |
(여집합은 없음) |
: 사전형 데이터를 의미하며, key와 value를 가짐.
딕셔너리는 중괄호({ }) 또는 dict()를 통해 생성
key를 통해 value에 접근
dict_a = {]
print(type(dict_a)) # <class 'dict'>
dict_b = dict()
print(type(dict_b)) # <class 'dict'>
dict_a = {'a':'apple', 'b':'banana', 'list':[1, 2, 3]}
print(dict_a['a']) # 'apple'
dict_b = {a:'apple', b:'banana', list:[1, 2, 3]}
print(dict_b) # {'a':'apple', 'b':'banana', 'list':[1, 2, 3]}