파이썬 리스트, 튜플 (Python List, Tuple)
1. 리스트 (list)
파이썬의 자료 구조 중 하나
순서가 있고, 수정 가능한 자료 구조
대괄호 [ ]로 작성되고, 리스트 내부 요소는 콤마(,)로 구분
하나의 리스트에는 다양한 자료형을 포함
이중 리스트 가능
추가, 수정, 삭제 가능
① 리스트 선언
a = [] # 빈 리스트
b = [1, 2, 3] # 숫자 요소를 담은 리스트
c = ['a', 'b', 'c'] # 문자(열) 요소를 담은 리스트
d = ['이순신', '세종대왕', 1, 2] # 문자(열), 숫자를 함께 담은 리스트
e = [[3, '아이유'], 5, '뉴진스'] # 리스트 내부에 리스트를 포함
print(a)
print(b)
print(c)
print(d)
print(e)
② 리스트 데이터 접근 : 인덱싱, 슬라이싱
- 인덱싱(Indexing)
인덱스 번호로 접근하기
lst1 = ['재석', '명수', '홍철', '형돈', '하하', '준하']
print(lst1[1])
이중리스트 인덱스 번호로 접근하기
list2 = [1, 2, 3, ['재석', '홍철', '형돈']]
temp = list2[3]
print(temp[1])
print(list2[3][1])
- 슬라이싱(Slicing)
lst1 = ['재석', '명수', '홍철', '형돈', '하하', '준하']
# 재석 ~ 형돈 데이터 접근하기
# 리스트명[시작인덱스:끝인덱스+1]
print(lst1[:4])
print(lst1[:]) # 시작, 끝 인덱스 생략
print(lst1[2:]) # 끝 인덱스 생략
이중 리스트 데이터 접근
# 이름, 나이, 혈액형 정보를 가진 이중리스트 만들기
lst3 = [['유재석', 50, 'B'], ['박명수', 52, 'A'], ['정준하', 51, 'A'], ['정형돈', 44, 'O'],['노홍철', 43,'O'], ['하하', 43, 'B']]
# 1. 명수의 나이, 혈액형 데이터에 접근해서 출력하기
# ~ 의 나이는 ~ 이고, 혈액형은 ~형입니다.
print(f'{lst3[1][0]}의 나이는 {lst3[1][1]}이고, 혈액형은 {lst3[1][2]}형 입니다.')
# 2. 재석의 혈액형 데이터 접근해서 출력하기
print(f'{lst3[0][0]}의 혈액형은 {lst3[0][2]}형 입니다.')
③ 리스트 반복 (연산자 활용)
lst1 = ['재석', '명수', '홍철', '형돈', '하하', '준하']
print(lst1 * 2)
리스트 더하기
lst5 = [1, 2, 3, 4]
lst6 = [5, 6, 7, 8]
lst5 + lst6
④ 리스트 관련 함수
리스트 값 추가 | |
append() | 리스트 끝에 값을 추가 |
extend() | 리스트 끝에 여러 요소를 한꺼번에 값을 추가 |
insert() | 리스트의 원하는 인덱스 위치에 값을 추가 |
리스트 값 삭제 | |
키워드 del | 인덱스 번호를 이용해서 삭제 |
remove() | 값을 이용해서 삭제 |
기타 함수 | |
index() | 리스트 값 위치 반환 |
sort() | 리스트 정렬 |
reverse() | 리스트에 있는 값을 역순으로 뒤집기 |
len() | 리스트의 값 개수 반환 |
pop() | 마지막 값을 반환 후 리스트에서 제거 |
- 리스트 값 추가 : append(), extend(), insert()
# append 함수 이용
lst1 = ['재석', '명수', '홍철', '형돈', '하하', '준하']
lst1.append('길')
print(lst1)
# extend 함수 이용
lst1 = ['재석', '명수', '홍철', '형돈', '하하', '준하']
lst1.extend(['전진', '길'])
print(lst1)
# insert 함수 이용
lst1 = ['재석', '명수', '홍철', '형돈', '하하', '준하']
lst1.insert(0, '광희')
print(lst1)
▶ 실습 : 추가할 위치 번호(1번부터 가능), 노래 제목, 가수를 입력 받고 music_list 리스트 안에 넣기
music_list = [['Ditto', '뉴진스'], ['사건의 지평선', '윤하'], ['Candy', 'NCT DREAM']]
music_list = [['Ditto', '뉴진스'], ['사건의 지평선', '윤하'], ['Candy', 'NCT DREAM']]
loc = int(input('추가 위치 번호 >> '))
song = input('노래 제목 >> ')
singer = input('가수 >> ')
music_list.insert(loc-1, [song, singer])
※ Tip : 리스트 값 수정 시 주의 사항
수정되는 요소의 개수와 새로 입력되는 요소의 개수를 맞춰줘야 하며, 요소의 개수가 맞지 않은 경우 오류 발생
슬라이싱으로 접근하여 [ ]로 감싼 요소 하나만 넣을 경우 리스트의 길이가 변형될 수 있다. → 데이터 훼손
lst6 = [0, 1, 2, 3, 4]
print('수정 전 : ', lst6[1])
lst6[1] = 5
print('수정 후 : ', lst6[1])
# 리스트 lst6에 슬라이싱을 한 후에 단일값을 넣어보기
lst6 = [0, 1, 2, 3, 4]
lst6[2:4] = 7
lst6 = [0, 1, 2, 3, 4]
print('수정 전 : ', lst6)
lst6[2:4] = [5]
print('수정 후 : ', lst6)
# 리스트 값의 수 자체가 줄어든다.
- 리스트 값 삭제 : del 키워드, remove()
# del 키워드
list7 = [0, 1, 2, 3, 4, 5]
del list7[2]
list7
# remonve() 함수
list7 = ['a', 'b', 'c', 'd', 'e']
# 'c' 삭제
list7.remove('c')
list7
- 리스트 값 위치 반환 : index()
lst8 = [9, 77, 13, 51, 100, 3]
print(lst8.index[4])
※ Tip : 리스트나 튜플이 아닌 그냥 문자열의 경우 find(), index() 사용
- 리스트 정렬 : sort()
lst8 = [9, 77, 13, 51, 100, 3]
lst8.sort() # 기본값 : 오름차순
print(lst8)
- 리스트에 있는 값을 역순으로 뒤집기 : reverse()
lst8 = [9, 77, 13, 51, 100, 3]
lst8.reverse()
print(lst8)
※ Tip : sort()와 reverse()를 이용하면 내림차순 정렬도 가능
혹은, sort()의 매개변수 값을 reverse=True로 바꿔주기
(함수 매개변수 확인 shift+tab)
lst8 = [9, 77, 13, 51, 100, 3]
lst8.sort()
lst8.reverse()
print(lst8)
lst8 = [9, 77, 13, 51, 100, 3]
lst8.sort(reverse=True)
print(lst8)
- 리스트의 값 개수를 반환 : len()
lst1 = ['a','b','c','d','e']
len(lst1)
- 마지막 값을 반환 후 리스트에서 제거 : pop()
lst1 = ['a','b','c','d','e']
print('pop() 실행 전 : ', lst1)
lst1.pop()
print('pop() 실행 후 : ', lst1)
2. 튜플 (tuple)
파이썬 자료 구조 중 하나
순서가 있는 자료형
소괄호 ( )로 작성되어지며, 튜플 내부의 요소는 콤마(,)로 구분
하나의 튜플에 여러 자료형을 포함할 수 있다.
추가, 수정, 삭제가 불가능
① 튜플의 선언
a = ()
b = (1,2,3)
c = ('a','b','c')
d = (1, 2, 'a', 'b')
e = (1, 2, (3, 4, 5))
print(a)
print(b)
print(c)
print(d)
print(e)
# 변수에 다른 표시 없이 여러 값을 한 번에 담으면 튜플로 담긴다
f = 1,2,3
print(f)
② 튜플 데이터 접근 : 인덱싱, 슬라이싱
tuple1 = (('유재석', 50, 'B'), ('박명수', 52, 'A'))
- 인덱싱(Indexing)
# 유재석의 혈액형에 접근
tuple1[0][2]
- 슬라이싱(Slicing)
tuple1 = (('유재석', 50, 'B'), ('박명수', 52, 'A'))
# 박명수의 이름과 나이에 접근
print(tuple1[1][0:2])
# 박명수의 이름과 혈액형에 접근 (증감값 이용)
print(tuple1[1][::2])
③ 튜플 추가, 수정, 삭제 불가능
tuple1 = (('유재석', 50, 'B'), ('박명수', 52, 'A'))
# 튜플의 유재석 이름을 정준하로 바꿔보기
tuple1[0][0] = '정준하'
▶ 예제 : 다음 리스트에 있는 과일 이름을 입력 받으면 리스트 안의 과일 인덱스 번호를 출력하거나 과일이 없으면 없다는 실행문장을 출력하기
listf = ['딸기', '바나나', '복숭아', '체리', '사과']
listf = ['딸기', '바나나', '복숭아', '체리', '사과']
fruit = input('검색할 문자를 입력하세요 >> ')
if fruit in listf :
print(f'{fruit}는 리스트 {listf.index(fruit)}번째 인덱스에 들어있습니다.')
else :
print(f'{fruit}는 리스트에 들어있지 않습니다.')
▶ 예제 : 다음 문자열에서 사용자가 입력한 글자가 몇 개 포함되는지 출력하기
s = 'Hi, My name is Gildong'
s = 'Hi, My name is Gildong'
a = input('검색할 문자를 입력하세요 >> ')
if a in s :
print(f'\'{a}\'는 {s.count(a)}번 들어 있습니다.')
else :
print(f'\'{i}\'는 문자열에 들어있지 않습니다.')
3. 패킹(packing), 언패킹(unpacking)
# 리스트, 튜플 패킹
list1 = [1, 2, 3]
tuple1 = (4, 5, 6)
tuple2 = 7, 8, 9
print(list1)
print(tuple1)
print(tuple2)
# 리스트, 튜플 언패킹
list1 = [1, 2, 3]
tuple1 = (4, 5, 6)
a, b, c = list1
d, e, f = tuple1
print(a, b, c)
print(d, e, f)
'Python' 카테고리의 다른 글
파이썬 딕셔너리(Python Dictionary) (0) | 2023.01.08 |
---|---|
파이썬 반복문(Python Loop) (0) | 2023.01.07 |
파이썬 조건문(Python Conditional Statements) (0) | 2023.01.06 |
파이썬 연산자(Python Operator) (1) | 2023.01.05 |
파이썬 변수, 문자열 (Python Variables, String) (0) | 2023.01.05 |
댓글