자료형의 값을 저장하는 공간, 변수

 변수란?

(1) 객체를 가리키는 것 : assignment( = ) 기호를 사용해서 "변수 = 저장할 값" 과 같이 선언한다.

a = 1
b = "python"
c = [1, 2, 3]

(2) 자료형의 데이터(값)와 같은 것 : C언어나 Java처럼 자료형을 따로 지정하지 않는다.

# Java에서 숫자데이터를 변수에 저장할 때
# int javaNum = 10;

# Python에서 숫자데이터를 변수에 저장할 때
pythonNum = 10

(3) 변수에 데이터를 할당하면 그 객체는 자동으로 메모리에 생성되고 변수는 저장된 메모리의 주소를 가르키게 된다. (메모리 주소는 사용자마다 다르게 나올수 있다.)

print(id(a))  # 출력결과 : 140735303312168

b = "python"
print(id(b))  # 출력결과 : 2894261684656

c = [1, 2, 3]
print(id(c))  # 출력결과 : 2894261685376

 

 리스트 복사

(1) [:] 사용

a = [1, 2, 3]
b = a[:]

print(a)		# 출력결과 : [1, 2, 3]
print(b)		# 출력결과 : [1, 2, 3]

(2) copy 모듈 사용

a = [1, 2, 3]
b = copy(a)

print(a)		# 출력결과 : [1, 2, 3]
print(b)		# 출력결과 : [1, 2, 3]

print(id(a))	# 출력결과 : 3151493893248
print(id(b))	# 출력결과 : 3151494869184

print(b is a)	# 출력결과 : False
print(b == a)	# 출력결과 : True

객체 b와 객체 a의 데이터를 비교하는 ( == )를 사용할 경우 '두 객체의 값이 같다' 는 의미로 True가 출력되고 두 객체의 메모리를 비교하는 is 키워드를 사용해서 '두 객체가 다르다' 는 의미로 False가 출력되는 것을 확인할 수 있다.

변수를 만드는 여러가지 방법
# 튜플
a, b = ('dokev', 'archive')
a, b = 'dokev', 'archive'
print(a)    # 출력결과 : dokev
print(b)    # 출력결과 : archive

# 값 바꾸기
a, b = b, a
print(a)    # 출력결과 : archive
print(b)    # 출력결과 : dokev

# 리스트
[c, d] = ['python', 11]
print(c)    # 출력결과 : python
print(d)    # 출력결과 : 11

x = y = 'dokev archive'
print(x)    # 출력결과 : dokev archive
print(y)    # 출력결과 : dokev archive

 


 

불(bool) 자료형이란?

참(True)과 거짓(False)을 나타내는 자료형, 다른 언어와 달리 첫문자를 항상 대문자로 작성한다. 파이썬의 내장함수 type(x)를 사용해서 자료형을 확인해보자.

a = True
b = False

print(a)		# 출력결과 : True
print(type(a))	# 출력결과 : <class 'bool'>

print(b)		# 출력결과 : False
print(type(b))	# 출력결과 : <class 'bool'>
 조건문의 리턴(return) 값

True나 False값 외에 조건에 대한 리턴 값으로도 사용된다.

print(1==1)		# 출력결과 : True
print(2<1)		# 출력결과 : False

a = 1==1
b = 2<1
print(a)		# 출력결과 : True
print(b)		# 출력결과 : False

 

 자료형의 참과 거짓

문자열, 리스트, 튜플, 딕셔너리 등의 값이 존재하면 참(True), 비어있으면 거짓(False)이 된다. 숫자에서는 0일때 거짓, 값이 존재하지 않는 변수 None이 거짓이 된다.

"python" "" [1, 2, 3] [] (1, 2, 3) () {'a':1} {} 1 0 None

or
거짓
거짓 거짓 거짓 거짓 거짓 거짓

 

불 연산

bool 함수를 통해 자료형의 참과 거짓을 판별할 수 있다.

print(bool([1, 2, 3]))	# 출력결과 : True
print(bool())			# 출력결과 : False
print(bool(0))			# 출력결과 : False
print(bool(3))			# 출력결과 : True

 


 

 

딕셔너리 자료형

 딕셔너리란?

 

(1) 대응 관계를 잘 나타내는 자료형, 연관 배열(Associative Array) 또는 해시(Hash)

(2) key와 value를 한쌍으로 갖는 자료형

(3) 리스트와 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 key를 통해 value를 얻는 형태

딕셔너리 기본구조

 

{ key1 : value1, key2 : value2 , key3 : value3 , ... } 의 구조처럼 key와 value 사이에 콜론(:) 으로 한쌍을 묶고 콤마(,)로 구분한다. 

person = {'name' : 'dokev', 'age' : 20, 'birth' : '1122'}
print(person)	# 출력결과 : {'name' : 'dokev', 'age' : 20, 'birth' : '1122'}

딕셔너리의 value에는 리스트도 넣을 수 있다.

dic = {'keyList': [1, 2, 'a', 'b']}
print(dic)      # 출력결과 : {'keyList': [1, 2, 'a', 'b']}
딕셔너리 요소(key : value) 추가하기

 

a[key] = value 형태로 딕셔너리 a에 key와 value를 추가한다. 딕셔너리는 순차적 요소를 사용하지 않기 때문에 순서는 상관하지 않아도 된다.

a = {1: 'a'}
a['name'] = 'dokev'
a[2] = 'b'
a['dicList'] = [1, 2, 3]

print(a)    
# 출력결과 : {1: 'a', 'name': 'dokev', 2: 'b', 'dicList': [1, 2, 3]}
딕셔너리 요소 삭제하기

 

del 함수를 사용해서 해당 key를 선택하면 value도 삭제된다. key 값이 1인 value값 'a'와 key값이 2인 value값 'b'가 삭제된 것을 확인할 수 있다.

a = {1: 'a', 'name': 'dokev', 2: 'b', 'dicList': [1, 2, 3]}
del a[1]
del a[2]

print(a)        # 출력결과 : {'name': 'dokev', 'dicList': [1, 2, 3]}
딕셔너리 사용시 주의사항

 

key가 중복되면 먼저 나온 key에 대한 value는 무시한다. 먼저 작성한 key 'name' 의 value는 'dokev' 였는데 뒤에 나온 key 'name' 의 value 'archive' 만 출력되는 것을 확인할 수 있다.

b = {'name' : 'dokev' , 'name' : 'archive'}
print(b)	# 출력결과 : {'name' : 'archive'}
딕셔너리 관련 함수들

 

(1) keys() : key 값들을 모아 리스트 만들기

(2) values() : value 값을 모아 리스트 만들기

(3) items() : key와 value 쌍으로 만들기

(4) clear() : key와 value 지우기

(5) get(key) : key로 value 값 얻기

(6) in : 해당 key가 딕셔너리 안에 있는지 확인


2장 파이썬 프로그래밍의 기초 [자료형] 

튜플형 자료형

- 튜플(tuple)이란

리스트와 비슷하지만 몇가지 다른점이 있다.

(1) 리스트는 [] 로 생성하고, 튜플은 ()로 생성한다 + () 도 생략이 가능하다.

(2) 리스트는 요소 값의 생성, 삭제, 수정이 가능하지만 튜플은 불가능하다.

t1 = (1, 2, 'a', 'b')
t2 = 3, 'c'

print(t1)		# 출력결과 : (1, 2, 'a', 'b')
print(t2)		# 출력결과 : (3 'c')

- 튜플 인덱싱

튜플을 만들 때 꼭 같은 데이터 타입으로 만들 필요는 없다. 튜플 안에 튜플을 포함 할 수도 있다.

t3 = (1, 2, 'dokev', 'archive')
t4 = (1, 2, ('dokev', 'archive'))

print(t3[2])    	 # 출력결과 : dokev
print(t4[2])    	 # 출력결과 : ('dokev', 'archive')
print(t4[2][1])	# 출력결과 : archive'

- 튜플 슬라이싱

리스트과 마찬가지로 튜플도 슬라이싱 기법을 사용해서 나눈다. t5[0:2] 의 경우 인덱스 번호 0번부터 2번 전까지 리스트를 가져온다는 의미로 사용된다. 또한 t5[:2] 는 처음부터 인덱스 2번 전까지, t5[2:] 는 인덱스 2번부터 끝까지 튜플을 가져온다.

t5 = (1, 2, 3, 4, 5)
print(t5[0:2])	# 출력결과 : [1, 2]

b = t5[:2]
c = t5[2:]

print(b)	# 출력결과 : [1, 2]
print(c)		# 출력결과 : [3, 4, 5]

 

- 튜플 연산하기

(1) 튜플 더하기 (+) : 튜플a 와 튜플b를 더하면 모든 요소를 튜플안에 담으면 된다.

t1 = (1, 2, 'a', 'b')
t2 = 3, 'c'

print(t1 + t2)	# 출력결과 : (1, 2, 'a', 'b', 3, 'c')

(2) 튜플길이 구하기 : len() 함수 사용

t1 = (1, 2, 'a', 'b')
t2 = 3, 'c'

print(len(t1+t2))	# 출력결과 : 6

- 튜플 요소 컨트롤

(1) 요소 수정 : t1[0]의 요솟값을 1에서 'c'로 바꿀 수 없다. 요솟값을 수정하려고 하면 'tuple' object does not support item assignment 오류가 발생하는 것을 볼 수 있다.

t1 = (1, 2, 'a', 'b')
t1[0] = 'c'
# TypeError: 'tuple' object does not support item assignment 오류 발생

(2) 요소 삭제(del) : t1[1] 에 해당하는 값을 삭제할 수 없다. 요솟값을 삭제하려고 하면 'tuple' object does not support item deletion 오류가 발생하는 것을 볼 수 있다.

t1 = (1, 2, 'a', 'b')
del t1[0]
# TypeError: 'tuple' object doesn't support item deletion 오류 발생

그 외에도 append(추가), sort(정렬), reverse(뒤집기), insert(삽입), remove(제거), pop(꺼내기), extend(확장) 등은 사용할 수 없고, index(인덱스반환), count(해당요소갯수) 는 확인할 수 있다.

 


 

2장 파이썬 프로그래밍의 기초 [자료형] 

 리스트 자료형

- 리스트 생성

리스트 이름을 만들과 대괄호 [ ] 안에 데이터를 넣고, 요솟값은 쉼표(,)로 구분

odd = [1, 3, 5, 7, 9]
# 리스트명 = [요소1, 요소2, 요소n]

a = []
# 비어 있는 리스트는 a = list()로 생성가능

- 리스트 인덱싱

리스트를 만들 때 꼭 같은 데이터 타입으로 만들 필요는 없다. 리스트 안에 리스트를 포함 할 수도 있다.

b = [1, 2, 3]
c = ['dokev', 'archive', 'develope']
d = [1, 2, 'dokev', 'archive']
e = [1, 2, ['dokev', 'archive']]

print(b[0])     # 출력결과 : 1
print(c[1])     # 출력결과 : archive
print(d[2])     # 출력결과 : dokev
print(e[2])     # 출력결과 : ['dokev', 'archive']

- 리스트 슬라이싱

문자열과 마찬가지로 리스트도 슬라이싱 기법을 사용해서 나눈다. a[0:2] 의 경우 인덱스 번호 0번부터 2번 전까지 리스트를 가져온다는 의미로 사용된다. 또한 a[:2] 는 처음부터 인덱스 2번 전까지, a[2:] 는 인덱스 2번부터 끝까지 리스트를 가져온다.

a = [1, 2, 3, 4, 5]
print(a[0:2])	# 출력결과 : [1, 2]

b = a[:2]
c = a[2:]

print(b)	# 출력결과 : [1, 2]
print(c)		# 출력결과 : [3, 4, 5]

- 리스트 연산하기

(1) 리스트 더하기 (+) : 리스트 a 와 리스트 b를 더하면 모든 요소를 리스트 안에 담으면 된다.

a = [1, 2, 3]
b = [4, 5, 6]

print(a + b)	# 출력결과 : [1, 2, 3, 4, 5, 6]

(2) 리스트 반복하기 ( * ) : 리스트를 여러번 반복할 때 사용한다.

a = [1, 2, 3]
print(a * 3)	# 출력결과 : [1, 2, 3, 1, 2, 3, 1, 2, 3]

(3) 리스트 길이 구하기 : len() 함수 사용

a = [1, 2, 3]
print(len(a))	# 출력결과 : 3

(4) 리스트 연산 오류 : 정수타입과 문자열은 더할 수 없기 때문에 오류 발생, str() 함수를 사용해서 정수타입의 데이터를 문자열로 바꿔준다.

a = [1, 2, 3]
print(a[1] + "hi")	
# 출력결과 : TypeError : unsupported operand typs(s) for +: 'int' and 'str'

print(str(a[1]) + "hi")		# 출력결과 " 2hi

- 리스트 요소 컨트롤

(1) 요소 수정 : a[2]의 요솟값을 3에서 4로 바꿀 수 있다.

a = [1, 2, 3]
a[2] = 4
print(a)		# 출력결과 : [1, 2, 4]

(2) 요소 삭제(del) : a[1] 에 해당하는 2 값이 삭제된다.

a = [1, 2, 3]
del a[1]
print(a)	# 출력결과 : [1, 3]

(3) 요소 추가(append) : 맨 마지막에 요소를 추가 한다. 

a = [1, 2, 3]

a.append(4)
print(a)	# 출력결과 : [1, 2, 3, 4]

a.append([5, 6])
print(a)	# 출력결과 : [1, 2, 3, 4, [5, 6]]

(4) 요소 정렬(sort) : 요소를 순서대로 정렬해 준다

a = [1, 4, 3, 2]
a.sort()

print(a)    # 출력결과 : [1, 2, 3, 4]

b = ['a', 'c', 'b']
b.sort()

print(b)    # 출력결과 : ['a', 'b', 'c']

(5) 리스트 뒤집기(reverse) : 리스트의 요소를 모두 거꾸로 배치한다.

a = [1, 4, 3, 2]
a.reverse()

print(a)    # 출력결과 : [2, 3, 4, 1]

# 역정렬 : 정렬 후 reverse()
# a.sort().reverse() 하면 AttributeError: 'NoneType' object has no attribute 'reverse' 오류
a.sort()
a.reverse()
print(a)    # 출력결과 : [4, 3, 2, 1]

(6) 인덱스 반환(index)

(7) 요소 삽입(insert)

(8) 요소 제거(remove)

(9) 요소 꺼내기(pop) : 맨 마지막 요소를 삭제한다.

(10) 리스트에 포함된 요소 갯수 세기(count) 

(11) 리스트 확장(extend)

+ Recent posts