리스트(list)
li1 = [1, 3, 5, 7, 9]
li2 = list([1, 3, 5, 7, 9])
li3 = ['김사과', '반하나', '오렌지','이메론']
li4 = [10, 5.5, '김사과', True]
li5 = [10, 5.5, '김사과', ['apple','banana']] # 이중배열
리스트 인덱싱
li1 = [1, 3, 5, 7, 9]
print(li1[-1]) # 9
print(li1[0] + li1[-1]) # 10
li2 = ['김사과','오렌지','반하나',['🍗','🍔','🥵']]
print(li2[-1]) # ['🍗','🍔','🥵']
print(li2[-1][-2]) # 🍔
li3 = [1, 3, 5, ['김사과','오렌지','반하나',['🍗','🍔','🥵']]]
print(li3[-1][-2])# 반하나
print(li3[-1][-1][-2]) # 🍔
리스트 슬라이싱
li4 = [10, 20, 30, 40, 50]
print(li4[0:3]) # 10, 20, 30
#같은 주소값을 바라보게됨(데이터 내용도 공유됨)
li5 = li4
li5[0] = 100
print(li5) # [100, 20, 30, 40, 50]
print(li4) # [100, 20, 30, 40, 50]
li6 = [10, 20, 30, ['김사과','오렌지','반하나'],40,['🍺','🫣']]
print(li6[3:6]) # [['김사과', '오렌지', '반하나'], 40, ['🍺', '🫣']]
print(li6[5][:1]) # ['🍺']
리스트 연산자
li7 = [10, 20, 30]
li8 = [40, 50, 60]
print(li7 + li8) # [10, 20, 30, 40, 50, 60]
print(li8 + li7) # [40, 50, 60, 10, 20, 30]
print(li7 * 3) # [10, 20, 30, 10, 20, 30, 10, 20, 30]
print('😇' * 30) # 😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇
li9 = [10,20,30]
li9[1] = '😇' # [10, '😇', 30]
print(li9[0] + li9[2]) # 40
리스트의 수정/삭제
li10 = [10, 20, 30]
li10[1] = 100
print(li10) # [10, 100, 30]
#슬라이싱을 이용해 데이터를 추가한 경우 리스트에 데이터가 포함
li10[1:2] = ['🤗','🫠'] # [10, '🤗', '🫠', 30]
#인덱싱을 이용해 리스트 데이터를 추가한 경우 리스트 안에 리스트를 포함
li10[1] = ['🤗','🫠'] # [10, ['🤗', 🫠'], 30]
li10[1:3] = [] # 빈 리스트를 저장 -> 삭제
print(li10) # [10]
del li10[0] # 인덱스 0번 요소 삭제
print(li10) # []
리스트 함수
li11 = [10,20,30]
li11.append(100) # [10,20,30,100]
li11.append([40,50]) # [10, 20, 30, 100, [40, 50]]
li11 = li11 + [60,70] # li11 += [60,70]
print(li11) # [10, 20, 30, 100, [40, 50], 60, 70]
li12 = [10, 20, 30]
li12.extend([100,200]) # [10, 20, 30, 100, 200]
li13 = [10, 20, 30, 40, 50]
li13.pop() # [10, 20, 30, 40]
temp = li13.pop() # 40
print(li13) # [10, 20, 30]
li14 = [10,20,30,40,50,20,40]
li14.remove(20) # [10, 30, 40, 50, 20, 40]
li15 = [10, 20, 30]
li15.insert(1,100) # [10, 100, 20, 30]
li16 = [10, 20, 30]
print(li16.index(30)) # 2
print(li16.index(100)) # 해당 값이 없으니 오류 발생
li17 = ['김사과','오렌지','반하나','이메론']
li17.reverse() # ['이메론', '반하나', '오렌지', '김사과']
li18 = [10,40,30,100,90,50]
li18.sort() #오름차순
print(li18) # [10, 30, 40, 50, 90, 100]
li18.sort(reverse=True) #내림차순
print(li18) # [100, 90, 50, 40, 30, 10]
li18 = ['Apple','apple','orange','banana','melon']
li18.sort() # ['Apple', 'apple', 'banana', 'melon', 'orange']
li19 = [10,20,30,50,20,40,30,20]
print(li19.count(20)) # 3
print(li19.count(15)) # 0
튜플(Tuple)
tu2 = (1,3,5,7)
print(tu2[0]) # 1
tu3 = 1, 3, 5, 7 # (1,3,5,7)
tu4 = ('apple','banana',['🍑','🌈'])
print(tu4) # ('apple','banana',['🍑','🌈'])
print(type(tu4)) # Tuple
tu5[2][0] = '◀︎' # ('apple', 'banana', ['◀︎', '🌈'])
튜플의 삭제
tu6 = (1,2,'apple','banana')
del tu6 # 이후 출력 시 오류 발생
튜플의 인덱싱과 슬라이싱 연산
tu8 =(1,2,'apple','banana')
print(tu8[0]) # 1
tu8 =(1,2,'apple','banana')
print(tu8[1:]) # (2, 'apple', 'banana')
print(tu8[1:3]) # (2, 'apple')
tu8 =(1,2,'apple','banana')
tu9 = (30,40)
print(tu8 + tu9) # (1, 2, 'apple', 'banana', 30, 40)
tu9 = (30,40)
print(tu9*3) # (30, 40, 30, 40, 30, 40)
tu8 =(1,2,'apple','banana')
print(len(tu8)) # 4
튜플의 정렬
tu10 = (1,3,2,0)
tu10.sort() #튜플은 sort() 메소드가 존재하지 않음
tu11 = sorted(tu10) # [0, 1, 2, 3]
print(type(tu11)) # list
if 조건식(결과가 True 또는 False가 나오는 문장):
조건식이 True인 경우 실행할 문장
if 조건식(결과가 True 또는 False가 나오는 문장):
조건식이 True인 경우 실행할 문장
else:
조건식이 False인 경우 실행할 문장
if 조건식1(결과가 True 또는 False가 나오는 문장):
조건식1이 True인 경우 실행할 문장
elif 조건식2(결과가 True 또는 False가 나오는 문장):
조건식2가 True인 경우 실행할 문장
else:
조건식이 False인 경우 실행할 문장
A | B | 결과 |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
A | B | 결과 |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
while 조건식:
조건식이 True인 동안 반복할 문장
…
range(): 범위를 생성하는 함수
- range(시작인덱스, 종료값+1 인덱스, 증가값)
- 시작인덱스의 기본값은 0, 증가값은 1, 종료값은 무조건 기입해줘야함
for 변수 in 객체(범위):
반복할 문장
...
num = range(0, 10, 1) # range(0, 10)
for i in num:
print(i,end=' ') # 0 1 2 3 4 5 6 7 8 9
for i in range(0, 10, 1):
print(i,end=' ') # 0 1 2 3 4 5 6 7 8 9
for i in range(10): # 종료값
print(i,end=' ') # 0 1 2 3 4 5 6 7 8 9
for i in range(0, 10): # 시작값, 종료값
print(i,end=' ') # 0 1 2 3 4 5 6 7 8 9
대응관계를 나타내는 자료형으로 key와 value라는 것을 한 쌍으로 갖는 형태
하나의 딕셔너리의 key는 중복될 수 없음
하나의 딕셔너리의 value는 중복될 수 있음
dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic3['userid']) # apple
데이터 추가 및 삭제
dic4 = {1: 'apple'} # {1: 'apple'}
dic4[100] = 'orange' # {1: 'apple', 100: 'orange'}
keys(): key 리스트를 반환
dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
dic3.keys() # dict_keys(['no', 'userid', 'name', 'hp'])
values(): value 리스트를 반환
dic3.values() # dict_values([1, 'apple', '김사과', '010-1111-1111'])
items(): key와 value를 한 쌍으로 묶는 튜플을 반환
dic3.items()
#dict_items([('no', 1), ('userid', 'apple'), ('name', '김사과'), ('hp', '010-1111-1111')])
get(): key를 이용해서 value를 반환
key를 통해 값을 가져오는 경우 키가 존재하지 않으면 에러가 나지만, get을 이용한 경우 None으로 출력됨
두번째 파라미터에 None 값일 때 반환할 값을 입력할 수 있음
dic3.get('userid') # apple
dic3['age'] # 키가 존재하지 않으면 에러
print(dic3.get('age')) # None
print(dic3.get('age', '나이를 알 수 없음')) # 나이를 알 수 없음
in: key가 딕셔너리 안에 있는지 확인
'name' in dic3 # True
'age' in dic3 # False
딕셔너리와 for
키 복사
dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
for i in dic3:
print(i, end=' ') # no userid name hp
for i in dic3.keys():
print(i, end=' ') # no userid name hp
값 복사
for i in dic3.values():
print(i, end=' ') # 1 apple 김사과 010-1111-1111
for i in dic3:
print(dic3[i], end=' ') # 1 apple 김사과 010-1111-1111
for i in dic3:
print(dic3.get(i), end=' ') # 1 apple 김사과 010-1111-1111