Knowledge Map

파이썬 강의 필기 1일차 본문

PYTHON

파이썬 강의 필기 1일차

2016. 4. 3. 23:22

매주 토요일마다 하는 파이썬 입문 강좌를 듣게 되었다. 매번 들은 것들에 대해서 간단히 필기한 것을 올려본다.

파이썬 버전은 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("=================================")
 
= 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배열)
"""
 
= []
= [1,2,3]
= [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, , , , , )
"""
 
= ('a','b','c','a','b','c')
print('t -> ',t)
print()
print(t,t*2len(t))
 
= (123,4,5)
print(p)
print(p[1])
# TypeError: 'tuple' object does not support item assignment :: 튜플은 읽기 전용이라서 그런거다. p[1] = 10 (X)
# 파이썬은 에러나면 다 멈춘다.
 
# 튜플을 리스트로 만들어줄수 있다.
# 리스트로 만들어주는 함수 --> list(객체명)
# 튜플로 만들어 주는 함수 --> tuple(객체명)
print(type(p))
= list(p)
print(type(p))
p[1= 1000
= 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. 슬라이싱이 되지 않는다.
"""
 
= {1,2,3,1}
print(a)
print(len(a))
# 중복된 값은 아예 저장이 안되고 그 외의 값만 저장되어서 출력이 된다. 즉 중복 값은 아예 무시해버린다.
# print(a[2])
# TypeError: 'set' object does not support indexing
# 위의 print는 에러가 난다. 왜냐하면 set은 인덱싱이 지원해주지 않기 때문에 인덱스 번호를 통해서 해봐도 아무런 소용이 없고 에러만 난다.
 
b={3456}
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