일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- correlation
- tensorflow text
- integrated gradient
- flask
- youtube data
- subdag
- Counterfactual Explanations
- requests
- API Gateway
- API
- XAI
- BigQuery
- login crawling
- session 유지
- UDF
- 상관관계
- Retry
- 유튜브 API
- Airflow
- hadoop
- airflow subdag
- chatGPT
- 공분산
- GenericGBQException
- grad-cam
- TensorFlow
- top_k
- spark udf
- gather_nd
- GCP
- Today
- Total
데이터과학 삼학년
[파이썬 기초] 파이썬 기초 및 자료형 소개 본문
Computational thinking
> 문제를 정의하고 해답을 일반화 하는 과정 → 결국 알고리즘
- 컴퓨터의 개념과 구조를 이해하고, 사용자가 기능을 추가, 개선하여 컴퓨터가 목적에 맞게 work를 하도록 구성함
ex) 튜링 머신
Python이란
- 1989년 크리스마스, 귀도반 로섬이 심심해서 만든 언어
- python 활용성
> 데이터분석, 기계학습, 웹개발, 게임, GUI(Tkinter,Pyqt) 등
> 속도가 중요한 프로그램은 python으로 구현하기에 제한적
(: cython, jython 등 활용하면 극복가능할 것으로 보임)
- python 특징
> 인터프리터 : 한줄씩 읽어 내려가며 순차적 실행(대화형언어)
↔ 컴파일러(코드를 한번에 불러오고, compiler가 코드 최적화 후 실행)
> 동적 타이핑 : runtime에 type 검사 수행하는 것(Type을 따로 지정하지 않아도 됨)
↔ 정적 타이핑 : 변수의 타입을 모두 지정해줘야함(C, JAVA 등)
> 엄격한 문법 : 들여쓰기가 필요함(들여쓰기에 따라 전혀 다른 코드 구현됨)
> 높은 생산성 : pypi 등 라이브러리 구현이 잘되어 있음
[참고 자료]
자바 : javac라는 녀석이 class라는 jvm이 인식할 수 있는 바이너리 코드로 변환 후 컴퓨터 실행
변수
- 컴퓨터 메모리에 있는 값을 참조하기 위한 이름
- “=” : 할당, “==” : 같다
- type : string, integer, float
- 변수명으로 사용할 수 없는 경우
> 변수명이 숫자로 시작하는 것
> 예약어(reserved word)
ex) return, int, global 등
- 변수 선언하면 안되는 경우
> 내장 함수(built in function) 명과 동일하게 사용하면 안됨 : 내장함수가 제대로 동작하지 않음
ex) sum, max, dict 등
> 언더 스코어(_)로 시작하는 경우
> 던더 시작(__)로 시작하는 경우 : class내 던더 메서드 사용
> 한글(?)..되긴 하는데….
- 연산자
> //(몫), %(나머지), **(지수)
> (a = a+3) == (a +=3)
문자열
- 컴퓨터는 0과 1의 값만 인식가능하여 문자를 0,1로 변환
- 파이썬3 : 문자열 유니코드(UTF-8) 사용
- 파이썬2: ASCII(아스키) 코드 사용(영어권) - 0~127 번호가 있음(ex. 65 = ‘A’,97=’a’)
- 비영어권을 위한 문자체계 필요 -> 표준문자 체계 정립 -> Unicode 로 사용
- 간혹, 파일을 불러올때 문자가 깨지는 이유가 문자체계의 문제임(window는 unicode를 안씀)
- 여러줄에 걸친 문자열을 나타낼때 따옴표 세개 사용
ex. “””
ㅋㅋㅋ
ㅋㅋ
ㅋ“””
- 띄어쓰기 표현 \n 적용
- 연산 가능
> + : 문자열끼리 붙이기
> * : 반복해서 붙이기
- 인덱스 연산
> 문자열에서 [] 와 옵셋을 지정하여 추출 가능
ex. a = ‘방대환’; print(a[0]) → 방
> 슬라이싱 이용 가능
ex. a = ‘방대환’; print(a[:2]) → 방대
- 문자열 나누기(split) : split을 사용하면 list에 결과가 저장
> ex. a = ‘김치 피자 햄버거’; a_lst = a.split() → [‘김치’, ‘피자’, ‘햄버거’]
- 문자열 결합(join) -> 문자열로 결과가 저장
> “,”.join(a_lst) → ‘김치,피자,햄버거’
- 문자열 포맷(format)
> “요맨 %s” % ‘느’ → 요맨 느
> “요맨 {}”.format(‘느’) → 요맨 느
Sequence-list
- 시퀀스(sequence) : 순서가 있는 자료형(리스트, 튜플, 문자열)
- 리스트(list)
> 자료타입이 달라도 담을 수 있음
> 빈 리스트 생성 : list(), []
> 시퀀스 타입은 인덱스를 가짐(즉, 슬라이싱도 가능)
ex. var1 = [1,2,3,’가’,’나’,’다’]; print(var1[0:len(var1)] → 전체 출력
- 삽입
> append는 list의 맨 뒷 인덱스에 붙임
> 두개 리스트 붙임 + 연산자 사용 or extend 사용
ex. var1 = ["fast","campus"]
var2 = ["all_in_one","python"]
var1.extend(var2)
print(var1) → ["fast","campus","all_in_one","python"]
만약, var3 = var1.extend(var2) ; → var3는 none → append도 마찬가지, 함수에 return 값이 없기 때문
> 순서도 지정하여 삽입 가능
ex. a = ["fast","campus","all_in_one","python"]
a. insert(1,2)
print(a) → ['fast', 2, 'campus', 'all_in_one', 'python']
- 삭제
> 리스트 내 직접 값을 삭제 : remove(값)
> 리스트 내 인덱스를 지정하여 삭제 : del var1[1]
- 값, 길이세기 → (var1.count(값), len(var1) )
- 인덱스 찾기 → var1.index(값)
Sequence-tuple
- 리스트와 비슷하나, 변수로 선언(정의)하고 난 후, 수정과 삭제가 불가능함
> ex. col = (1,2) → col[1] = 3 → 실행 안됨
- a = 1,2,3,4 ; b = 1, → 튜플로 만들어짐
> 웬만하면 ( )로 묶어서 만들자
- a = ‘호호호호호’, → 튜플로 만들어짐….주의하자!
- 튜플을 쓰는 이유
> 순서가 있는 묶음으로 변수를 지정하고 사용할 때
> a,b = b,a → 변수 switch 가능
> 리스트보다 적은 메모리 사용 → 값이 바뀌지 않을 경우 튜플을 쓰는 것이 좋을 듯
> 정의후 값이 절대 변하지 않음
Dictionary
- key-value 형태로 갖는 자료형(해시, 해시맵), 순서가 없음
- {}, dict() 로 생성
ex.
lst = [[‘a’,’가’],[‘b’,’나’],[‘c’,’다’]] ; dict(lst) → dictionary 형성됨
a=['aa','bb','cc']
dict(a) → {'a': 'a', 'b': 'b', 'c': 'c'}
- 특징 : key 중복 불가능, 순서x, 항목 추가 변경 가능
- 키만 뽑아오기 .keys()
- 값만 뽑아오기 .values()
- 키, 값 뽑기 .items()
- 항목 삭제 del dic[‘키’]
- 모든 항복 삭제 .clear()
Set
- 생성 : set(), {‘a’,’b’,’c’} *주의 : {} → 딕셔너리생성…!
- 집합연산 가능
| 합집합
& 교집합
- 차집합
^ 대칭차집합
- 실습
1.list1 변수에 1~1-까지 요소 담은 리스트 선언
→ list1 = [i for i in range(1,11)]
2. dict1 에 1:1, 2:2, 11:11, 12:12 요소 담은 딕셔너리 선언
→ dict1 = {key:value for key, value in [(1,1),(2,2),(11,11),(12,12)]}
3. list1과 dict1의 키 값을 비교하여 list1에 없는 요소들만 출력
→ dict1.keys() - set(list1)
위 자료는 fastcampus python 강의 자료를 토대로 구성했음을 밝힙니다.