a = ()
: <class 'tuple'>
b = []
: <class 'list'>
c = {}
: <class 'dict'>
>>> a = (1, 2, 3)
>>> a
(1, 2, 3)
>>> a[0] # index
1
>>> a[1] # index 범위는 0, 1, 2
2
>>> a[2]
3
>>> a[3]
IndexError: tuple index out of range # index 범위를 벗어나면 에러
: slice 슬라이싱 한다고 한다
>>> a = (1, 2, 3, 4, 5)
>>> a[1:3] # 앞의 index 부터 뒤의 index 앞까지의 index
(2, 3)
>>> a[0:5]
(1, 2, 3, 4, 5)
>>> a[:] # 모든 index
(1, 2, 3, 4, 5)
>>> a[:3] # 처음 index 부터 뒤의 index 앞까지의 index
(1, 2, 3)
>>> a[2:] # 앞의 index 부터 끝까지
(3, 4, 5)
>>> a[0]
1
>>> a[-1]
5
>>> a[-2]
4
>>> a[:-1]
(1, 2, 3, 4)
>>> a = (1, 2, 3)
>>> b = (4, 5)
>>> c = a + b
>>> c
(1, 2, 3, 4, 5)
>>> a = 'hello, world'
>>> len(a) # 문자열의 길이를 알려주는 함수
12
>>> a.find('wo') # 문자의 위치를 알려주는 함수
7
>>> a,split(',') # () 안의 문자를 기준으로 문자열을 쪼개주는 함수
['hello', 'world']
>>> ''.join(['hello', 'world']) # . 앞의 내용을 두 문자열 사이에 입력해 하나의 문자열로 만드는 함수
'helloworld'
>>> a = 'hello, world'
>>> a.strip() # 공백을 제거하는 함수
'hello, world'
>>> a.upper() # 소문자를 대문자로 만들어준다
'HELLO, WORLD'
>>> b = a.strip()
>>> b = b.upper()
'HELLO, WORLD'
>>> b = a.strip().upper()
>>> a = (1, 2, 3)
>>> b = (3, 4)
>>> a>b # 사전 순서로 따진다
False
>>> a==b
False
>>> a!=b
True
: [ ], { }에도 사용
>>> a = (1, 2, 3)
>>> len(a) # 길이
3
>>> sum(a) # 합
6
>>> max(a) # 최대값
3
>>> min(a) # 최소값
1
>>> a = (3, 2, 8, 9, 4, 5)
>>> min(a)
2
>>> max(a)
9
>> sorted(a) # 순서대로 나열
[2, 3, 4, 5, 8, 9] # 결과는 '리스트'
>>> a
(3, 2, 8, 9, 4, 5) # a 자체가 바뀌는 것은 아니다
a = (1, 2, 3)
for i in range(len(a)):
print(a[i])
a = (1, 2, 3)
for item in a:
print(item)
[결과]
1
2
3
a = (1, 2, 3)
for i, item in enumerate(a):
print(i, item)
[결과]
0 1
1 2
2 3
>>> a = (1, 2, 3)
>>> for i in a:
... print(i)
1
2
3
>>> a = (1, 2, 3)
>>> for i in a:
... print(i)
1
2
3
>>> 1 in a
True
>>> 4 in a
False
==
: 가리키는 값이 같은지 확인하고 싶을 때 사용
is
: 같은 객체를 참조하고 있는지 확인하고 싶을 때
>>> a = (1, 2, 3)
>>> b = (1, 2, 3)
>>> a == b
True
>>> a is b
False
: iterator 객체는 tuple로 변환할 수 있다
>>> a = (1, 2, 3)
>>> b = [4, 5, 6] # 리스트
>>> c = tuple(b)
>>> c
(4, 5, 6)
>>> a = range(3)
>>> type(a)
<class 'range'>
>>> b = tuple(a)
>>>type(b)
<class 'tuple'>
class PhoneBook:
def __init__(self):
self.names = ('KIM', 'LEE', 'PARK')
self.phones = ('111-1111', '222-2222', '888-8888')
def search(self, name):
if name in names:
idx = names.index(name)
return idx
else:
return None
def print_one(self, idx):
name = names[idx]
print("{0}{1}'s phone number is {2}".format(name[0], name[1:].lower(), phones[idx])) # 첫글자만 대문자로 출력
def print_all(self):
n = len(names)
for i in range(n):
print_one(i)
name = input('Input your name : ')
name = name.strip().upper() # 공백을 벗겨내고, 대문자로 바꾼다
phoneBook = PhoneBook()
idx = search(name)
if idx != None:
phoneBook.print_one(idx)
else:
print('Not registered name')
phoneBook.print_all()
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> a[0] # index
1
>>> a[1] # index 범위는 0, 1, 2
2
>>> a[2]
3
>>> a[3]
IndexError: tuple index out of range # index 범위를 벗어나면 에러
>>> a = [[1, 2, 3], [4, 5, 6]]
>>> len(a)
2 # 0번 axis에 값이 2개
>>> len(a[0])
3 # 1번 axis에 값이 3개
>>> a[0]
[1, 2, 3]
>>> a[1]
[4, 5, 6]
>>> a[1][2]
6
>>> a[0]
[1, 2, 3]
>>> a[0][1] # [1, 2, 3][1]
2
>>> a[:]
[[1, 2, 3],[4, 5, 6]]
>>> a[:][0] # a[:] <-> a <-> [[1, 2, 3], [4, 5, 6]]
[1, 2, 3]
>>>a[0][1:] # a[0] <-> [1, 2, 3]
[2, 3]
>>> a = list() # a = []
>>> type(a) # 객체생성-객체이름 뒤에()
<class 'list'>
>>> a = (1, 2, 3)
>>> b = list(a) # 튜플(Iterator객체)을 리스트로
[1, 2, 3]
>>> b = list(range(3))
[0, 1, 2]
>>> a = [1, 2, 3]
>>> a[0] = 100
[100, 2, 3]
>>> a[0] = [10, 20, 30]
[[10, 20, 30], 3]
>>> del a [0] # 삭제도 바꾸는 것의 일종
[2, 3]
>>> del a
# 추가하기
>>> a = [2, 3]
>>> a.append(1)
[2, 3, 1]
>>> a = [2, 3]
>>> a.insert(0, 1)
[1, 2, 3]
# 또 다른 추가 방법
>>> a = []
>>> a[0] = 1
IndexError : list assignment index out of range
>>> a = '1' + '1' + '1'
'111'
>>> a = '1' * 3 # 곱하기는 더하기 반복
'111'
>>> a = [-1] * 3 # 미리 칸을 만들어둔다 : append보다 효율적
[-1, -1, -1] # 넣을 수 있는 값의 종류는 한가지로 지정
>>> a[0] = 1
>>> a = [1, 2, 3, 4, 5]
>>> a.pop() # 맨 뒤에 것 꺼내고 삭제
5
>>> a
[1, 2, 3, 4]
>>> a.pop(3)
4
>>> a.pop(-1)
3
>>> a
[1, 2]
>>> a = [1, 2, 3, 4, 5]
>>> a.remove(3) # 값 3을 찾아서 지운다
[1, 2, 4, 5]
>>> a.remove(9) # 없는 값을 지우라고 하면 에러
ValueError : list.remove(x) : x not in list
>>> a.index(9) # 없는 값 index 요구하면 에러
ValueError : list.remove(x) : x not in list
>>> 9 in a
False
>>> a = [3, 1, 5, 4, 3]
>>> a.sort() # a 자체가 바뀜
>>> a
[1, 3, 3, 4, 5]
>>> a.reverse()
[5, 4, 3, 3, 1]
>>> sorted(a) # a 자체는 안바뀜; 동작 결과로 정렬된 리스트를 남김
[1, 3, 3, 4, 5]
>>> a.clear()
[]
>>> a = [1, 2, 3]
>>> b = [4, 5]
>>> a.extended(b)
[1, 2, 3, 4, 5]
>>> a = [1, 2, 3]
>>> a = a + b
[1, 2, 3, 4, 5]
>>> a = [1, 2, 3]
b = a
>>> print(b)
[1, 2, 3]
>>> a[0] = 10
print(b)
[10, 2, 3]
# 같은 객체를 가리키게 됨
>>> a = [1, 2, 3]
>>> b = a.copy()
>>> print(b)
[1, 2, 3]
>>> a[0] = 10
print(b)
[1, 2, 3]
# 같은 값만 가짐(같은 객체가 아님)
def show(b):
b[0] = 10
print(b, 'in show')
a = [1, 2, 3]
show(a)
print(a)
[결과]
[10, 2, 3] in show
[10, 2, 3]
def show(a)
b = a.copy()
b[0] = 10
print(b, 'in show')
a = [1, 2, 3]
show(a)
print(a)
[결과]
[10, 2, 3] in show
[1, 2, 3]
def isEmpty():
n = len(Names)
if n==0:
return True
else:
return False
def listAll():
print('LIST')
print('--------------')
bEmpty = isEmpty()
if bEmpty == True:
print('Phone Book is empty')
return # 함수를 끝내는 용도로 사용
for i, name in enumerate(Names):
phone = Phones[i]
print("{0} {1}{2} {3}".format(i+1, name[0], name[1:].lower(),phone))
print('Total : {} items'.format(len(Names)))
def search():
print('SEARCH')
name = input('Input the name: ')
name = name.strip().upper()
if name in Names:
idx = Names.index(name)
phone = Phones[idx]
print("{0}{1}'s phone number is {2}".format(name[0], name[1:].lower(), phone))
return idx
else:
print("Not Found")
return None
def insert():
print('INSERT')
name = input('Input new name: ')
name = name.strip().upper()
phone = input('input the phone number: ')
phone = phone.strip().upper()
Names.append(name)
Phones.append(phone)
print("Updated")
def update():
print('UPDATE')
idx = search()
if idx == None:
return
else:
name = input('Input a name: ')
name = name.strip().upper()
phone = input('input the phone number: ')
phone = phone.strip().upper()
Names[idx] = name
Phones[idx] = phone
print("Updated")
def delete():
print('DELETE')
idx = search()
if idx == None:
return
else:
name = Names[idx]
del Names[idx]
del Phones[idx]
print("{0}{1} deleted".format(name[0], name[1:].lower()))
Names = ['KIM']
Phones = ['111-1111']
menuList = ['S', 'N', 'U', 'D', 'A', 'Q']
bFinish = False
while not bFinish:
print('\n---------------')
print('[S] Search')
print('[N] Insert')
print('[U] Update')
print('[D] Delete')
print('[A] List All')
print('[Q] Quit')
print('[--------------]')
menu = ''
while True:
munu = input('Menu')
menu = menu.strip().upper()
print()
if menu in menuList:
break
if menu=='S':
search()
elif menu=='N':
insert()
elif menu=='U':
update()
elif menu=='D':
delete()
elif menu=='A':
listAll()
elif menu=='Q':
bFinish = True
menuList = ['S', 'N', 'U', 'D', 'A', 'Q']
bFinish = False
class PhoneBook:
def __init__(self):
self.Names = ['KIM']
self.Phones = ['111-1111']
def isEmpty(self):
n = len(self.Names)
if n == 0:
return True
else:
return False
def search(self):
print('SEARCH')
name = input('Input the name: ').strip().upper()
if name in self.Names:
idx = self.Names.index(name)
phone = self.Phones[idx]
print("{0}{1}'s phone number is {2}".format(name[0], name[1:].lower(), phone))
return idx
else:
print('NOT Found')
return None
def insert(self):
print('INSERT')
name = input('Input the name: ').strip().upper()
phone = input('Input the phone number: ').strip().upper()
self.Names.append(name)
self.Phones.append(phone)
print('Inserted')
def update(self):
print('UPDATE')
idx = self.search
if idx == None:
return
else:
name = input('Input the name: ').strip().upper()
phone = input('Input the phone number: ').strip().upper()
self.Names[idx] = name
self.Phones[idx] = phone
print('Updated')
def delete(self):
print('DELETE')
idx = self.search()
if idx == None:
return
else:
name = self.Names[idx]
del self.Names[idx]
del self.Phones[idx]
print("{0}{1} deleted".format(name[0], name[1:].lower()))
def listAll(self):
print('List')
bEmpty = self.isEmpty()
if bEmpty == True:
print('Phone Book is Empty')
else:
for i, name in enumerate(self.Names):
phone = self.Phones[i]
print("{0}{1} : {2}".format(name[0],name[1:].lower(),phone))
while not bFinish:
print('\n---------------')
print('[S] Search')
print('[N] Insert')
print('[U] Update')
print('[D] Delete')
print('[A] List All')
print('[Q] Quit')
print('[--------------]')
menu = ''
while True:
menu = input('Menu: ').strip().upper()
print()
if menu in menuList:
break
if menu=='S':
PhoneBook.search()
elif menu=='N':
PhoneBook.insert()
elif menu=='U':
PhoneBook.update()
elif menu=='D':
PhoneBook.delete()
elif menu=='A':
PhoneBook.listAll()
elif menu=='Q':
bFinish = True
a = [[1, 1, 1], [2, 2, 2]]
b = [[3, 3, 3], [4, 4, 4]]
def print_mat(m, name):
rows = len(m)
cols = len(m[0])
print(name,'=')
for j in range(rows):
for i in range(cols):
print('{:3d}'.format(m[j][i]), end='')
print()
print_mat(a, 'a')
print_mat(b, 'b')
def add_mat(a, b):
rows = len(a)
cols = len(a[0])
print('add')
c = []
for j in range(rows):
c.append([])
for i in range(cols):
c[j].append(a[j][i]+b[j][i])
return c
c = add_mat(a, b)
print_mat(c, 'c')
def trans_mat(a):
rows = len(a)
cols = len(a[0])
c = []
for i in range(cols):
c.append([])
for j in range(rows):
c[i].append(a[j][i])
return c
print_mat(a, 'a')
c = trans_mat(a)
print_mat(c, 'c')
: 데이터 쌍; Key -> Value를 다룬다
>>> a = dict()
>>> a = {}
>>> = {'kim' : '111-1111', 'lee' : '222-2222', 'park' : '333-3333'}
>>> a['kim'] # index로 Key를 사용
'111-1111' # 대응되는 Value를 남긴다
>>> a[1] # 없는 Key를 넣으면 에러
KeyErrot : 1
>>> a.Keys() # 어떤 Key를 가지고 있는지 알려줌
dict_ket(['kim', 'lee', 'park'])
>>> a.keys()
dict_key(['kim', 'lee', 'park']) # 어떤 키가 있는지 알려준다.
>>> for key in a.keys():
... print(key, end=' ')
kim lee park
>>> a.keys().__iter__().__next() # next(iter(a.keys()))
'kim'
>>> keys = list(a.keys()) # 리스트로 변환해볼 수 있다
['kim', 'lee', 'park']
>>> a.values()
dict_values(['111-1111', '222-2222', '333-3333'])
>>> for val in a.values():
... print(val, end=' ')
111-1111 222-2222 333-3333
>>> values = list(a.values()) # 리스트로 변환해볼 수 있다
['111-1111', '222-2222', '333-3333']
>>> a.items()
dict_items([('kim', '111-1111'), ('lee', '222-2222'), ('park', '333-3333')])
>>> for item in a.items():
... print(item)
('kim', '111-1111')
('lee', '222-2222')
('park', '333-3333')
>>> k, v = ('kim', '111-1111')
>>> k
'kim'
>>> v
'111-1111'
>>> for key, value in a.items():
... print(key, value)
kim 111-1111
lee 222-2222
park 333-3333
>>> a = {1:100, 3:300, 5:500, 3:400}
{1:100, 3:400, 5:500}
>>> a = {1:100, 3:300, 5:500}
>>> a[1] = 150 # 있는 키 넣으면 수정
{1:150, 3:300, 5:500}
>>> a[4] = 400 # 없는 키 넣으면 추가
>>> a[2] = 200
{1:150, 3: 300, 5:500, 4:400, 2:200}
>>> del a[4] # Key4를 찾아서 있으면 삭제한다
{1:150, 3:300, 5:500, 2:200}
>>> del a[4]
KeyError: 4 # key4가 없으면 에러 발생
>>> a = {'1':100, '3': 300, '5': 500}
>>> a.pop()
TypeError : pop expected at least 1 arguments, got 0 # Key를 넣어야한다
>>> a.pop('2') # 없는 Key를 넣으면 에러 발생
KeyError '2'
>>> a.pop('3')
300
>>> a
{'1':100, '5':500} # 꺼내고 지운다
# list에서 pop은 맨 마지막 것을 꺼내 왔는데?
>>> a.popitem()
('5':500) # 맨 긑의 아이템을 꺼내고 지운다
>>> a= {'1':100, '3':300m '5':500}
>>> '1' in a.keys()
True
>>> '1' in a # 그냥 딕셔너리를 사용할 수 있다.
True
>>> '2' in a
False