Knowledge Map
파이썬 강의 필기 1일차 본문
매주 토요일마다 하는 파이썬 입문 강좌를 듣게 되었다. 매번 들은 것들에 대해서 간단히 필기한 것을 올려본다.
파이썬 버전은 3.4.4이며 이것은 파이썬의 wxPython이 돌아가는 가장 최신 버전이 3.4.4라서 이걸로 진행한다고 한다.
example1.py
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 31 32 33 34 35 36 37 38 39 40 41 | print("=================================") print("테스트 입니다.") print("=================================") # 한줄 주석입니다. ''' 여러줄 주석 문자열은 '문자열' 또는 "문자열" 파이썬은 모든 데이터를 객체로 표현한다. 다른 언어와는 다르게 또 다른 메모리 주소에 저장되기 때문에 다른 언어처럼 temp 변수를 만들어서 저장할 필요가 없다. 파이썬은 기본적으로 대소문자를 구분한다. ''' # 파이썬에서 저장된 주소값을 확인하는 기능 id var1 = "연습" #다른 언어 자료형(규칙 String(문자열) -> 자료형 X print(var1) print(type(var1), id(var1)) var1 = 5 print(var1) print("자료형",type(var1),"주소값", id(var1)) print("=================================") a = 10; b=20.5; c=30 print(a,b,c) print(id(a),id(b),id(c)) print("=================================") # 값을 비교(==), 주소값 비교(is) print("각각의 값과 주소값을 비교합니다.") print(a==b, a is b) print("=================================") # type() 자료형 확인 print('1 : ',type(1),'|| 1.0 : ',type(1.0),'|| 3+4j : ',type(3+4j), '|| True : ',type(True),'|| a : ',type('a'),type("a")) print("=================================") # 확장 자료형 (), {} , [list : 배열], {키 : 저장할값} print("확장자료형") print(type((1,)),type({1}),type([1]), type({'k':1})) | cs |
example2.py
# 변수 -> 치환 v1 = 3 v1 = v2 = v3 = 5 print(v1,v2,v3) print(id(v1),id(v2),id(v3)) # 확인해 보면 서로 변수는 다르지만 주소값를 공유하고 있다. v1,v2 = 10,20 #이런 방식으로 값 입력도 가능하다. print('v1 의 주소값:',v1,'||| v2의 주소값:',v2) print()#줄바꿈 역할 # 파이썬에서는 문자와 숫자를 결합해서 출력하려고 하면 에러가 난다. # print('v1' + 123 + 'v2' + 123) 이런 방식. # 만약 결합시켜서 하고 싶다면 변형을 시켜야 한다. 문자를 숫자로, 또는 숫자를 문자로 변형을 시키면 괜찮다. # int('문자'), str(숫자) print('v1 = '+str(v1),', v2 = '+str(v2)) print('v1 =',v1,', v2 =',v2) print() print("연산자") # 산술연산자 -> +,-,*,/ || 관계연산자(대소비교) bool print('5>=3',5>=3,'5==3', 5==3,'5!=3', 5!=3) # 논리연산자 : 참거짓을 판별 -> True or Fasle # and(수식이 모두 참)-->&& or(둘중 하나만 참) --> || 부정(!) not print('5>3 and 4<2=',5>3 and 4<2,'|| 5>3 or 4<2=', 5>3 or 4<2,'|| not(5>3)=', not(5>3)) print() print("연산자 우선순위 : 괄호 > 산술(*,/,+,-) > 관계 > 논리 > 치환") # 문자열*숫자 ==> 문자열을 숫자만큼 반복해서 출력한다. print("===========================================================================\n"*10) print("배정연산자") a=10 a=a+1 #a++ (증감 연산자) 하지만 파이썬에서는 증감연산자가 없다. 따라서 증감연산자 대신에 a+=1을 추천한다. a+=1 print(a) print(a, -a, a*-1, --a)#-기호를 붙이게 되면 마이너스 값이 된다. -- 두번을 붙이면 상쇄된다. text1 = "파이썬의 기초를 배우는 수업을 주말에 하고 있다." | cs |
example3_print.py
# 출력문 형태(2.x, 3.x) print('\n print 출력서식 연습') # format(출력할 값, 서식) print(format(1.5678, '10.3f')) #.3은 소수점 3자리를 말한다. # %d(정수), %s문자열, %c(문자하나), %f(소수점) print('나는 나이가 %d 이다.'%23) print('나는 나이가 %s 이다.'%'스물셋') print('나는 나이가 %d 이고 이름은 %s이다.'%(23,'홍길동')) # 밑의 구문도 에러가 나지 않는다. 왜냐하면 %s일 경우에는 대입할 자료형이 달라도 모든 자료형을 맞춰줄 수 있기 때문이다. # 즉 숫자 -> 문자로 자동 형변환을 한다. print('나는 나이가 %s 이고 이름은 %s이다.'%(23,'홍길동')) print() print('[포맷을 사용하지 않는 방식]') print('나는 키가 %.1f이고, 공부열정은 %d%% 이다.'%(177.7,100)) # %2번 쓰면 %기호 표시됨 # 위와 같은 형태는 파이썬 2.x 의 방식이고 그쪽에서 주로 많이 쓴다. # 내장함수(~), 객체명.함수명(=메서드명(~)) print('[포맷을 사용하는 방식]') print('이름은 {}이며, 나이는 {}이다.'.format('홍길동',27)) print('이름은 {0}이며, 나이는 {1}이다.'.format('홍길동',27))#원칙적으로는 숫자를 써주는게 맞다. | cs |
example4_str.py
""" 파이썬 문자열 1. 순서가 정해져 있다. 2. indexing이 가능하다. ( 문자열 배열의 인덱스번호 ) 3. slice 가 가능하다. 4. 문자열 변경 X 1 & 2 & 3을 지원하는 게 시퀸스 자료형이라고 한다. """ ss = 'mbc' print(ss, 'mbc', id(ss), id('mbc')) print('\nslicing') # 인덱스번호는 0부터 시작한다. s='sequence' # [번호] => 문자출력, [첫번째수:마지막번째수-1] => 범위값 출력 # [ :마지막번호] -> 0~마지막번호-1 # [첫번째번호: ] -> 첫번째번호 ~ # [::배수(n)] -> 0부터 배수(n)만큼 뽑아내서 출력 print(s[0],s[2:4],s[:4],s[4:]) print(s[0],s[-4:-1],s[:-4],s[-4:]) print(s[::3]) print() print('길이(크기):',len(s)) print('e 포함(횟수):',s.count('e')) print('검색위치:',s.find('e'))#보통 앞에서 부터 검색한다. print('검색위치:',s.rfind('e'))#뒤에서 부터 검색한다. print() s2='kbs mbc' # s3 = s2.split(sep=' ') 매개변수명 = 지정할 값 부여 s3 = s2.split(' ') #split() --> 분리시켜주는 함수, 리스트 형태로 출력한다. print(s3) #s3는 자료형이 리스트라서 형이 안 맞아서 upper()가 안 먹힌다. 이건 문자형에만 먹힘. print(s2.upper()) | cs |
example5_list.py
""" 배열 : 같은 자료형을 모아놓은 자료구조이다. 리스트 : 여러개의 자료형을 모아놓은 자료구조이다. 시퀀스 자료형이다. [ ] <- 이 표시이다. 1. 순서가 정해져 있다.(0부터 시작함) 2. 값의 변경이 가능하다.(입력, 수정, 삭제, 조회) 3. 중복된 데이터를 허용한다. 4. 임의의 데이터를 저장 가능하다. 5. 리스트 내부에 또 다른 리스트를 저장이 가능하다.(ex 2배열) """ x = [] a = [1,2,3] b = [10, a, 20.5, True,'문자열'] print(a) print(b) # 리스트는 입력값이 늘어나면 그 값에 따라 크기가 증가한다. family = ['아버지', '어머니', '형', '나', '동생'] print(family) print(id(family)) print('가족 수 = ',len(family),'명') print('리스트의 구성원 =', family[0:]) family.append('남동생') print(id(family)) print('추가된 가족구성원 = ',family[-1]) # append는 하나의 값을 입력할때이다. # extends는 리스트의 형태로 여러개의 데이터를 동시에 추가 가능하다. # extend([ , , , ,]) 또는 +=[ , , , , ,] family.extend(['삼촌', '사촌', '이모', '숙모', '조카']) print('리스트의 구성원 =', family[0:]) print(id(family)) # Q. 리스트에 값은 주소값을 저장하는건가? 맞다. 그리고 달라지는 값에 대해서는 주소값 치환한다. # Q. 끊임없이 새로 주소값이 부여되면 정리는 GC등이 알아서 처리한다. # 리스트내부의 특정단어 있는지 확인? # 형식) 찾고자 하는 단어 in 리스트 ==> 있으면 true, 없으면 false print() print('어머니 is','어머니' in family,'\n고모부 is', '고모부' in family,'\n형의 인덱스는 ', family.index('형')) print('\n슬라이싱 가능') aa = [1,2,3,[3.1,3.2,3.3,'삼.사','삼.오'],4,5] print(aa[2],aa[0:2]) aa[0] = 100 print('aa ==>',aa) print(aa[3]) print(aa[3][4]) #앞번호 :전체 리스트 에 적용됨 // 뒷 번호: 리스트 내부의 구분 번호 aa[3].append('good') print(aa) # append 는 거의 뒤에 추가된다. insert | cs |
example6_list.py
aa = [100,2,3,['good','b','c'],4,5] print(aa) #리스트 내부의 잘못된 데이터 삭제 --> remove(인덱스번호) # 리스트에는 중복 데이터 입력도 가능하다. # remove(삭제할 값) aa.remove(2) #여기서는 매칭되는 값이 지워진다. print(aa) # del 삭제할 대상자 del aa[2] print(aa) print() # 중복된 데이터 저장 가능 aa = [3,1,5,2,4,4] print(aa) aa.sort() # Q. print(aa.sort())는 왜 None 출력하나? # A. sort() 함수 자체의 return 값이 없어서 그렇다. print(aa) aa.sort(reverse=True) print(aa) print(aa.pop()) # 리스트의 마지막 요소를 빼서 제거한다. print(aa.pop()) print(aa) #형식 pop(인덱스번호)를 붙이면 인덱스 번호 기준으로 뽑아내게 된다. print(aa.pop(0)) print(aa) | cs |
example7_list.py
""" 값을 대입(치환) """ v1,v2 = 10,20 print(v1,v2) # 주소값을 바꿔보자. v1,v2 = 20,10 print(v1,v2) # 팩킹 언팩킹은 튜플뿐만 아니라 다 적용된다. print() v1, *v2 = [1,2,3,4,5] #리스트 값을 넣을때 *를 쓴다. # 1. 값을 치환 # 2. 나머지 값들에 대해서 주소 같이 팩킹 해서 주소 부여됨 print(v1,v2) *v1, v2 = [1,2,3,4,5] print(v1,v2) # 어떤 리스트 값중에 특정한 리스트 값을 저장할수 잇다. *v1, v2, v3 = [1,2,3,4,5] #보통 *변수 는 처음과 끝에 오는 경우가 많다. print('v1:',v1,'// v2:',v2,'// v3:',v3) # 리스트의 특정요소를 다른 변수에 할당하는것:팩킹(packing) | cs |
example8_tuple.py
""" [] -> 리스트, () -> 튜플 1. 리스트와 유사하나, 읽기 전용이다. CRUD 안됨. 따라서 이미 저장된 값에 대해서 읽기 전용으로 검색에 많이 쓰인다. 2. 중복을 허용한다. 3. 형식 ) 변수명 = (값1, 값2, , , , , ) """ t = ('a','b','c','a','b','c') print('t -> ',t) print() print(t,t*2, len(t)) p = (1, 2, 3,4,5) print(p) print(p[1]) # TypeError: 'tuple' object does not support item assignment :: 튜플은 읽기 전용이라서 그런거다. p[1] = 10 (X) # 파이썬은 에러나면 다 멈춘다. # 튜플을 리스트로 만들어줄수 있다. # 리스트로 만들어주는 함수 --> list(객체명) # 튜플로 만들어 주는 함수 --> tuple(객체명) print(type(p)) p = list(p) print(type(p)) p[1] = 1000 p = tuple(p) print(type(p)) print(p) # 솔직히 주소값을 가져오는 것이기 때문에 위와 같이 변환해도 문제가 없는 듯하다. 상황에 따라 임시 변수를 줘서 값옮기고 하든지 말든지~ print('/n 튜플도 슬라이싱이 가능하다.') print(p[0:]) a,b,*c, = p print('a=>',a,'b=>',b,'c=>',c) # 튜플도 * 이용은 리스트와 같다. | cs |
example9_set.py
""" [] -> 리스트 () -> 튜프 {} -> 셋(set) set의 특징 1. 순서가 없고, 중복된 데이터 저장 불가 --> 시퀀스 자료형이 아니다. 2. 인뎃싱 되지 않는다. 3. 슬라이싱이 되지 않는다. """ a = {1,2,3,1} print(a) print(len(a)) # 중복된 값은 아예 저장이 안되고 그 외의 값만 저장되어서 출력이 된다. 즉 중복 값은 아예 무시해버린다. # print(a[2]) # TypeError: 'set' object does not support indexing # 위의 print는 에러가 난다. 왜냐하면 set은 인덱싱이 지원해주지 않기 때문에 인덱스 번호를 통해서 해봐도 아무런 소용이 없고 에러만 난다. b={3, 4, 5, 6} print('합집합 ->',a.union(b)) #합집합 처리, 중복된 교집합 값은 무시됨 print('합집합 ->',a.union(b)) #합집합 처리, 중복된 교집합 값은 무시됨 print('교집합 ->',a.intersection(b)) #교집합 구하기 print(a-b, a|b, a&b) # a-b (공통부분 빼고, 중복 제거), a|b(합) , a&b(교집합) print(a) # set형에 값을 저장 -->add(데이터 1개) , update(객체명) b.add('test') print(b) b.update({'가가',11,12}) #set 형 b.update([21,22]) #리스트형 b.update((31,32)) #튜플 print('update 적용후', b) # 삭제 --> discard(삭제할 값), remove(삭제할 값) b.discard(32) b.remove(31) b.discard(32) # b.remove(31) //discard 는 중복 삭제가 시행되어도 그냥 에러가 나오진 않는다. remove 는 중복 삭제될 경우 에러뜬다. print(b) # 중복이 많은 리스트 -> 중복된 데이터를 제거 -> set // set()함수는 set 으로 변형시켜주는 함수이다. li = [1,2,3,4,1,2,4,6,2,3,3,2,1,4,5,1] print(li, id(li)) li = list(set(li)) #이러면 알아서 중복 값을 다 없애준다. print(li, id(li)) | cs |
example10_dic.py
""" dic --> 사전형 --> 키 : 값 1. 순서가 없다. 2. 따라서 인덱싱, 슬리이싱 안되고, 시퀀스 자료형이 아니다. 3. 키를 가지고 조회한다. 4. 형식) 변수명 = dict(key=value, key=value, , , , ) or 변수명 = {key:value, key:value, , , } """ mydic = dict(k1=1, k2='abc', k3=3.4) #dic 생성하는 방법 1 print(mydic) #출력할때 랜덤 print(mydic['k2']) dic = {'|파이썬|':'스네이크','|자바|':'커피?','|과자|':'질소'} #dic 생성하는 방법 2 # print(dic[1]) KeyError: 1 print(dic) dic['|데이터베이스|']='오라클' # 객체명['키명] = '값' --> 값을 저장 # del 객체명['키명] --> 값을 삭제 del dic['|자바|'] print(dic) print() print("[사전형의 검색]") print(dic['|과자|']) print(dic.keys()) #키 만 보여줌 print(dic.values()) #값 만 보여줌 print(dic.items()) #키와 값 둘다 보여줌. 리스트안에 튜플항목으로 보여준다. print('|파이썬|' in dic.keys()) print('스네이크' in dic.values()) #키,값에 대한 검색 으로 true,false나오게 한다. | cs |
'PYTHON' 카테고리의 다른 글
파이썬 강의 필기 2일차 (0) | 2016.04.10 |
---|---|
파이썬 한글 정규표현식 (0) | 2016.04.05 |
python2 & python3 설치 (0) | 2016.03.19 |
크롤링 lxml (0) | 2016.03.13 |
파이썬 플라스크 sqlalchemy - DB받아오기 (0) | 2016.02.29 |
Comments