Python 기초 정리 1 (기초~자료형)
맥은 기본적으로 파이썬이 설치되어 있다. 버전이 2점대일 경우 홈페이지가서 수동 설치 필요.
-
python.org
-
Python 3.6.2 Downloads (파이썬2와 3은 호환 안되는 부분 있음. 처음 시작하는 사람은 Python3하기)
-
내장함수
-
print() → 출력함수
print(1, 2, 3) → 1 2 3 (쉼표써서 출력하고자 하면 자동으로 띄어쓰기 상태로 출력됨 → 띄어쓰기는 꼭 넣어주기)
- print(’’, end=’’) 출력의 끝 지정 가능.
print('집단지성', end='미운코딩새끼') 집단지성미운코딩새끼
- print(’’, end=’’) 출력의 끝 지정 가능.
-
input() : 사용자 입력 함수 → 안에 문자 넣을 수 있음
input(’이름을 입력하세요 : ‘) age = input(’당신의 나이는? : ’) → 사용자가 31입력 → age = ‘31’
-
int() → 형 변환 함수 / 변수를 int형으로 변경 가능
-
str() → 형 변환 함수 / 변수를 str형으로 변경 가능
-
list() → 형 변환 함수 / 변수를 list형으로 변경 가능
my_str = 'coding' list(my_str) ['c', 'o', 'd', 'i', 'n', 'g']
-
len() → 변수의 길이를 반환
-
range() → 연속되는 숫자를 값으로 취하고 싶을 때 사용하는 함수
사용법 : range(시작할 숫자, 마지막 숫자(실제 숫자는 -1))
for i in range(0, 3) : # 0부터 시작해서 3 직전까지 숫자 출력 -> [0, 1, 2] print(i) 0 1 2
-
bool()
bool( ) 을 이용하면 입력된 식이나 값을 평가해 불 형의 값(True 또는 False)을 출력해준다.
식이나 값을 계산해서 결과값이 만들어지는 것을 평가(evaluate)라고 한다.
python 언어에서 정수값 0은 False(거짓)로 평가되고, 그 외의 값들은 모두 True(참)로 평가된다.
- 불 대수(boolean algebra)는 수학자 불이 만들어낸 것으로 True(참)/False(거짓) 값만 가지는 논리값과 그 값들 사이의 연산을 다룬다.
- 불 대수(boolean algebra)는 수학자 불이 만들어낸 것으로 True(참)/False(거짓) 값만 가지는 논리값과 그 값들 사이의 연산을 다룬다.
- Variable
값 저장할 수 있음. 이 값은 바뀔 수 있음.
변수명 = 할당할 값 → 여기서 =은 대입연산자
-
Naming 규칙 : 글자 가능, _, 대소문자 구분 가능. 한글도 됨, *도 됨. → 파이썬에는 유니코드를 쓰기때문에 유니코드 안에 들어 있는 문자는 다 됨.
단 ❗❗❗
- 숫자로 시작할 수 없음.
- 공백 안됨 (언더바 쓰셈)
-
자료형
-
Numeric
- 정수형 : 정수형(Integer)는 정수를 다루는 자료형
- 양의 정수, 음의 정수, 0 포함
- 코테에서 출제되는 많은 문제들은 주로 정수형 다룸.
- 실수형 : 실수형(Real Number)는 소수점 아래의 데이터를 포함하는 수 자료형
- 파이썬에서는 변수에 소수점을 붙인 수를 대입하면 실수형 변수로 처리됨.
- 소수부가 0이거나, 정수부가 0인 소수는 0을 생략하고 작성 가능 ex) 5. -7. ⇒ 실수
- 복소수형
-
지수 표현 방식
- 파이썬에서는 e나 E를 이용한 지수 표현 방식을 이용
- e나 E다음에 오는 수는 10의 지수부를 의미ex) 1e9 ⇒ 10의 9제곱을 의미 유효숫자e지수 = 유효숫자 * 10지수
→ 수 자료형의 연산
-
사칙연산 많이 사용
-
나누기 연산자 (/) 사용시 주의 ⇒ 파이썬에서 나누기 연산자(/)는 나눠진 결과를 실수형으로 반환
-
나머지 연산자 (%)
-
몫을 얻기 위한 연산자 (//)
-
거듭 제곱 연산자 (**)
-
개발과정에서 실수 값을 제대로 비교하지 못해서 원하는 결과 못 얻음. 이럴 땐 round() 함수를 이용함. round(123.456, 2) ⇒ 123.46
-
- 정수형 : 정수형(Integer)는 정수를 다루는 자료형
-
String (Immutable)
-
문자열 : “string”
- 문자열 변수를 초기화 할 때는 큰따옴표나 작은 따옴표 이용( 작은 따옴표와 큰 따옴표 섞어 쓰면 안됨. )
- 값을 변경할 수 없음
- 값의 순서를 변경할 수 없음
- “”” “”” (큰따옴표 or 작은따옴표 3개씩 쓰기 가능 → 엔터쳐서 사용할 때)
my_str = """김씨가족 이씨가족 최씨가족 """ my_str '김씨가족\n이씨가족\n최씨가족\n'
- 문자열 연산도 가능.
-
Formatting : 문자열을 좀 더 잘 표현하기 위함 퍼센트 연산자
- 옛날방식 : (%)를 사용 → C 서타일
-
%d (정수형) : 여러개의 포맷팅을 사용하고 싶을 땐 쉼표로 구분
'%d %d' % (4, 7) '4 7'
-
%f (실수형) :
'%f' % 3.14 '3.140000'
-
%s (문자열) :
my_str = 'My name is %s' % '이주원' my_str 'My name is 이주원'
-
요즘방식 : ‘{ }’.format()
# 요즘 방식 '{} x {} = {}'.format(3, 7, 3*7) '3 x 7 = 21' 'My name is {}'.format('조희진') 'My name is 조희진' '{1} x {0} = {2}'.format(2,3,8) # 주소 찾아서 넣을 수도 있음. 3이 {1}로, 2가 {0}으로, 8이 {2}로 '3 x 2 = 8' # 옛날 방식 '%d x %d = %d' % (3, 7, 3) '3 x 7 = 21' 'My name is %s' % '조희진' 'My name is 조희진'
-
Indexing : 각 문자열의 위치
❓ 왜 1이 아니라 0부터 시작하는가? 옛날엔 컴퓨터 성능이 안 좋아서 한 칸이라도 아끼기 위해 1이 아니라 0부터 시작했다고 함. 이 습관이 굳어져서 0부터 시작.
-
공백도 인덱스 매겨짐
-
인덱스를 거꾸로 매길수도 있음 (맨 마지막 글자의 주소가 -1임)
-
-
Slicing : 문자 썰어서 가져오기
-
사용법 : 변수[시작위치:종료위치] → 떼 오는 방법은 위 그림을 잘 이해할 것
문자열을 일부분 썰어 오다
- 처음부터 3번째까지 2. 2번부터 마지막글자까지
-
-
Split : string.split() → 문자열을 공백단위로 잘라주어 리스트로 만들어줌
my_name = "김왼손의 왼손코딩" my_name.split() ['김왼손의', '왼손코딩'] fruit_str = '거봉 수박 딸기 복숭아 포도 망고 배 참외 용과 키위' fruit_str.split() ['거봉', '수박', '딸기', '복숭아', '포도', '망고', '배', '참외', '용과', '키위'] # 리스트 형으로 담김 # 어떤 문자를 기준으로 잘라라
-
Docstring : 따옴표 세개 사용해서 쓰는 것, 이 자체도 주석이 될 수 있음
-
Escape Code
특정한 기능을 하는 문자의 조합
- \n : 줄바꿈
- \t : 탭
-
-
Boolean
True / False (예약어)
-
List (Mutable)
- 리스트 : 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형
-
my_List = [값1, 값2, 값3, ...]
-
사용자 입장에서 C나 자바에서의 배열(Array)의 기능 뿐 아니라 연결 리스트의 기능 지원
-
C++의 STL vector와 기능적으로 유사
-
리스트 대신에 배열 혹은 테이블이라고 부름
-
리스트 : ([])에 원소 넣거나 쉼표(,)로 구분. 인덱스는 0부터 시작 ⇒ a = [3,5,4,3,2]
→ 인덱스 값을 입력하여 리스트의 특정한 원소에 접근하는 것을 인덱싱(Indexing)이라고 함.
-
인덱스는 양의 정수, 음의 정수 모두 사용 가능
a = [3, 5, 4, 3, 2] # 0 1 2 3 4 # -5 -4 -3 -2 -1
-
리스트에서 연속적인 위치를 갖는 원소들을 가져와야 할 때 슬라이싱(Slicing)을 이용
- 대괄호 안에 콜론(:)을 넣어서 시작 인덱스와 끝 인덱스를 설정
- 끝 인덱스는 실제 인덱스 보다 1을 더 크게 설정 → 인덱스 1부터 4까지 가져오겠다 하면 a[1:5]
-
리스트 초기화 (리스트 컴프리 헨션)
-
대괄호 안에 조건문과 반복문을 적용하여 리스트를 초기화
# 0 ~ 9까지의 수를 포함하는 리스트 array = [i for i in range(10)] # 0부터 19까지의 수 중에서 홀수만 포함하는 리스트 array = [ i for i in range(20) if i % 2 == 1 ] # 1부터 9까지의 수들의 제곱 값을 포함하는 리스트 array = [i*i for i in range(1, 10)]
-
2차원 리스트를 초기화할 때 효과적으로 사용
-
N * M 크기의 2차원 리스트를 초기화 해야할 때 매우 유용
- 좋은 예시 : array = [[0] * m for _ in range(n)] ⇒ for _ : 내부적으로 iterator 안 쓸 때 언더바로 표기
- 나쁜 예시 : array = [[0] m] n ⇒ 모두 같은 객체로 인식해버림.
-
-
리스트 함수
| 함수명 | 사용법 | 설명 | 시간 복잡도 | | --- | --- | --- | --- | | append() | 변수명.append() | 리스트에 원소를 하나 삽입할 때 사용됨. → 리스트가 없는 상태에서 append를 쓰면 에러남. list가 꼭 있어야함. | O(1) | | sort() | 변수명.sort() | 기본 정렬 기능으로 오름차순으로 정렬한다. | O(NlogN) | | reverse() | 변수명.reverse() | 내림차순으로 정렬한다. | O(N) | | insert() | insert(삽입할 위치 인덱스, 삽힙할 값) | 특정한 인덱스 위치에 원소를 삽입할 때 사용한다. | O(N) | | count() | 변수명.count(특정 값) | 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 때 사용한다. | O(N) | | remove() | 변수명.remove(특정 값) | 특정한 값을 갖는 원소를 제거하는데, 값을 가진 원소가 여러 개면 하나만 제거한다. | O(N) |
→ sort() : 메소드 (사용하는 것만으로도 객체의 값 자체를 바꿔줌)
a = [1,5,2,4,3]
a.sort() ⇒ print(a) → [1,2,3,4,5]
→ sorted() : 내장함수 (값 자체를 안 바꿔줌)
b = [1,5,2,4,3]
sorted(b) ⇒ print(b) → [1,5,2,4,3]
→ remove_All 함수는 없음.
-
- Indexing : 리스트에 들어있는 인덱스에 맞춰 값을 가져올 수 있음 사용법 : 리스트[인덱스]
- Del : 인덱스에 해당하는 값을 리스트에서 삭제함. 사용법 : del 리스트[인덱스] : 인덱스에 해당하는 값을 리스트에서 삭제함.
- Slicing : 리스트에서 시작위치부터 종료위치에 해당 하는 원소들을 가져옴
- 리스트 : 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형
-
Tuple (Immutable)
-
튜플 : 튜플은 한 번 선언된 값을 변경할 수 없음.
-
리스트는 대괄호[]를 이용하지만, 튜플은 소괄호()를 이용.
-
튜플은 리스트에 비해 상대적으로 공간 효율적.
my_Tuple = ('이곰돌', '이주원', '김광희', '이흥복') my_Tuple ('이곰돌', '이주원', '김광희', '이흥복') my_Tuple[0] = '이체니' # List에선 원소 값을 변경할 수 있지만 Tuple에선 불가능 Traceback (most recent call last): File "<pyshell#100>", line 1, in <module> my_Tuple[0] = '이체니' TypeError: 'tuple' object does not support item assignment
-
-
Packing : 값을 모아다가 변수에 할당하는 행위
my_tuple = 1, 2, 3
-
Unpacking : 튜플에 들어있는 원소를 변수에 나눠 할당하는 행위
``` num1, num2, num3 = my_tuple num1 1 num2 2 num3 3 #### num1을 2로 num1을 1로 바꾸고 싶을 때 num1, num2 = num2, num1 ```
-
Dictionary
-
사전 : 키(Key)와 값(Value)의 쌍을 데이터로 가지는 자료형
- 리스트나 튜플이 값을 순차적으로 저장하는 것과는 대비됨. → 딕셔너리는 관련된 자료를 서로 연관시켜놓음.
- 원하는 '변경 불가능한(Immutable) 자료형'을 키로 사용.
- 파이썬의 사전 자료형은 해시 테이블(Hash Table)을 이용하므로 데이터의 검색 및 수정에 있어서 O(1)의 시간에 처리 가능.
# 사전 자료형 초기화 방법 data = {'사과' : 'Apple', '바나나' : 'Banana', '코코넛' : 'Coconut'} data['사과'] -> 'Apple' # 또 다른 초기화 방법 data = dict() data['사과'] = 'Apple' data['바나나'] = 'Banana' data['코코넛'] = 'Coconut' # 키(Key) 값(Value) # 사과 Apple
- 특정 요소를 지우고 싶을 때 del 사용
my_dict {0: 'juwon', 1: 'komdol', 2: 'kkh', 3: 'lhb', 'etc': 'stranger'} del my_dict['etc'] my_dict {0: 'juwon', 1: 'komdol', 2: 'kkh', 3: 'lhb'}
- 딕셔너리 메서드(특정 자료형에서만 쓸 수 있음)
https://www.notion.so/Python-e5aaf3e3a5694082988c2d48c65579a1#cabc2b05f6ea4dcab5bc2cf5c040e26b
-
Author And Source
이 문제에 관하여(Python 기초 정리 1 (기초~자료형)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@juwonlee920/Python-기초-정리-1-기초자료형저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)