1. list(리스트)
- 파이썬 자료구조 중 하나
- 순서가 있고, 수정이 가능한 자료구조
- 대괄호[]로 작성되고, 리스트 내부의 값을 콤마, 로 구분
- 하나의 리스트에는 다양한 자료형을 포함 ex)[1, "a", 3.14, [1, "b"]
- 추가, 수정, 삭제가 가능
1.1 리스트 선언
# 리스트명 = [요소1, 요소2, 요소3, ...]
a = [] # 빈 리스트 선언
b = [1, 2, 3, 4] # 숫자요소를 담은 리스트
c = ["이수하", "강수연", "정준화"] # 문자열 요소를 담은 리스트
d = [1, 2, '이경민', '김세현'] # 숫자, 문자열 요소를 담은 리스트
e = [1, 2, '이예은', '문현준', [1, 2, 3]] # 리스트 내부에 리스트를 포함한 리스트
# [] : 단일리스트
# [][] : 이중리스트
print(a)
print(b)
print(c)
print(d)
print(e)
# []
# [1, 2, 3, 4]
# ['이수하', '강수연', '정준화']
# [1, 2, '이경민', '김세현']
# [1, 2, '이예은', '문현준', [1, 2, 3]]
1. 2 리스트 데이터 접근 : 인덱싱, 슬라이싱
# 인덱싱 : 리스트명[인덱스번호]
lst1 = [1, 3, 5, 7, 9]
# 숫자 5에 접근해보기
lst1[2]
# 숫자 9에 접근해보기
lst1[4]
lst2 = [1, 2, 3, ["a", "b", "c"]]
temp = lst[3] # 단일리스트
# ['a', 'b', 'c']
print(lst2[3][1]) # 이중리스트
# 이중리스트에서 원하는 요소에 접근할 때는 먼저 단일리스트화에서 다시 인덱싱
# b
# len() : 길이를 알려주는 함수
len(lst2)
lst2
# [1, 2, 3, ['a', 'b', 'c']]
# 리스트명[시작인덱스 : 끝인덱스+1]
# 인덱스 범위 : 시작인덱스 <= 인덱스 번호가 포함
끝인덱스 < 인덱스 번호 미포함
lst3 = ['양승광', '김선제', '송안명', '이수하', '박현주']
lst3[2 : ]
lst3[0 : 3]
# 이중리스트를 만들고 데이터 접근해보기
# 이름, 좋아하는 숫자, 즐겨마시는 음료 정보 기반의 이중 리스트
lst4 = [["이범준", 3, "제로콜라"], ["이동훈", 6, "데자와"], ["강태호", 9, "사이다"],
["박현주", 4, "아이스티"], ["유상빈", 7, "스무디"]]
# 이동훈의 숫자, 음료 정보 접근해서 출력하기
print(f"이동훈씨가 좋아하는 숫자는 {lst4[1][1]}이고, 좋아하는 음료는 {lst4[1][2]}.")
# 이동훈씨가 좋아하는 숫자는 6 이고 좋아하는 음료는 데자와
# 이범준, 강태호, 유상빈 정보를 리스트로 가져오기
lst4[ : : 2]
# [['이범준', 3, '제로콜라'], ['강태호', 9, '사이다'], ['유상빈', 7, '스무디']]
# 포매팅을 활용해서 이름과 음료 정보 출력하기
print(f"{lst4[0][0]}씨는 {lst4[0][2]} 음료를 좋아합니다.")
print(f"{lst4[1][0]}씨는 {lst4[1][2]} 음료를 좋아합니다.")
print(f"{lst4[2][0]}씨는 {lst4[2][2]} 음료를 좋아합니다.")
print(f"{lst4[3][0]}씨는 {lst4[3][2]} 음료를 좋아합니다.")
print(f"{lst4[4][0]}씨는 {lst4[4][2]} 음료를 좋아합니다.")
# 이범준씨는 제로콜라 음료를 좋아합니다.
# 이동훈씨는 데자와 음료를 좋아합니다.
# 강태호씨는 사이다 음료를 좋아합니다.
# 박현주씨는 아이스티 음료를 좋아합니다.
# 유상빈씨는 스무디 음료를 좋아합니다.
1.3 리스트 반복 : 연산자 활용
lst5 = [1, 2, 3, 4, 5]
lst5 * 3
# 곱해지는 수만큼 리스트가 반복
# [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
lst6 = [6, 7, 8, 9, 10]
lst5 + lst6
# 앞, 뒤의 리스트가 연결되는 개념
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1.4 리스트 관련 함수
① 리스트 값 추가 1 : append()
-리스트 끝에 값을 하나 추가하는 기능
lst7 = ['김주미', '강수연', '김세현', '박상준', '문현준']
# 이동훈 추가해보기
lst7.append('이동훈')
lst7
# ['김주미', '강수연', '김세현', '박상준', '문현준', '이동훈']
② 리스트 값 추가 2 : extend()
- 여러 요소를 한꺼번에 추가해주는 기능
lst7.extend(['안다빈', '이예은', '강태호', '박종현'])
lst7
# ['김주미', '강수연', '김세현', '박상준', '문현준', '이동훈', '안다빈', '이예은', '강태호', '박종현']
fruits = ['사과', '샤인머스캣', ['귤', '멜론'], '오렌지']
apple = fruits[0]
melon = fruits[2][1]
orange = fruits[3]
choice_list = []
choice_list.append(apple)
choice_list.append(melon)
choice_list.append(orange)
print(choice_list)
# ['사과', '멜론', '오렌지']
type(choice_list)
# list
③ 리스트 값 추가 3 : insert()
- 원하는 인덱스 위치에 값을 추가하는 기능
- 형식 : 리스트명.insert(인덱스번호, 값)
choice_list.insert(1, "딸기")
choice_list
# ['사과', '딸기', '멜론', '오렌지']
# 자신이 좋아하는 과일을 원하는 위치에 추가
choice_list.insert(2, '참외')
choice_list.insert(4, '복숭아')
choice_list
# ['사과', '딸기', '참외', '멜론', '복숭아', '오렌지']
music_list = [["사건의 지평선", "윤하"], ["Nxde", "(여자)아이들"], ["Hype boy", "뉴진스"]]
loc = int(input("추가 위치 번호 >> "))
song = str(input("노래 제목 >> "))
singer = str(input("가수 >> "))
music_list.insert(loc-1, [song, singer])
④ 리스트 값 수정하기
choice_list
# ['사과', '딸기', '참외', '멜론', '복숭아', '오렌지']
# choice_list[0] = '귤'로 변경
print('수정 전 : ', choice_list[0])
choice_list[0] = '귤' # 귤이라는 새로운 데이터를 대입(할당)
print('수정 후 : ', choice_list[0])
# 수정 전 : 사과
# 수정 후 : 귤
choice_list[ : 2] = '바나나'
choice_list
# ['바', '나', '나', '참외', '멜론', '복숭아', '오렌지']
lst6 = [6, 7, 8, 9, 10]
lst6[ : 2] = [1]
lst6
# [1, 8, 9, 10]
⑤ 리스트 값 삭제
- del 키워드 : 인덱스번호를 이용해서 삭제
- remove() 함수 : 값을 이용해서 삭제
# del 키워드 사용
lst7 = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# lst7에서 숫자 7 삭제
del lst7[6]
lst7
# [1, 2, 3, 4, 5, 6, 8, 9, 10]
# 2 ~ 4까지의 숫자 삭제
del lst7[1 : 4]
# 여러 개의 데이터를 삭제할 때 유용(슬라이싱을 사용)
lst7
# [1, 5, 6, 8, 9, 10]
# remove() 함수
lst7
# [1, 5, 6, 8, 9, 10]
# 8 삭제하기
lst7. remove(8)
lst7
# [1, 5, 6, 9, 10]
=> del 키워드와 remove() 함수의 차이점
- del 키워드로 리스트 요소를 삭제할 경우 삭제된 요소의 인덱스가 사라지는 게 아니고 뒤의 요소가 당겨지므로 인덱스가 존재. 요소를 삭제하고자 할 때 요소가 없다는 오류는 발생하지 않음.
- remove() 함수를 이용하여 리스트 요소를 삭제한 경우 다시 삭제된 리스트 요소를 삭제하고자 할 때 요소가 없다는 오류가 발생됨.
오류 발생 코드 => ValueError : list.remove(x) : x not in list
⑥ 리스트 정렬
- sort() : 기본값은 오름차순
- reverse() : 리스트에 있는 값을 역순으로 뒤집는 함수
lst8 = [9, 17, 2, 38, 55, 98, 67]
lst8.sort()
lst8
# [2, 9, 17, 38, 55, 67, 98]
# reverse() 함수 : 리스트에 있는 값을 역순으로 뒤집는 함수
lst8.reverse()
lst8
# [98, 67, 55, 38, 17, 9, 2]
# 오름차순으로 정렬
lst8[::-1]
# [2, 9, 17, 38, 55, 67, 98]
⑦ 리스트 값 위치 반환
- index("찾을 요소")
lst8
# [98, 67, 55, 38, 17, 9, 2]
# 38의 인덱스 번호를 알기 위해서?
lst8.index(38)
# 3
text_str = "빅데이터 18회차 반입니다."
# '반'의 인덱스 번호 찾기
text_str.index('반')
# 10
⑧ 마지막 값을 반환하고 리스트에서 제거하는 함수
- pop()
lst9 = ['a', 'b', 'c', 'd', 'e']
lst9.pop()
# 'e'
lst9
# ['a', 'b', 'c', 'd']
댓글