본문 바로가기
프로그래밍/파이썬 Python

[파이썬 문법] 4. 리스트와 튜플 기초개념[장단점,예시50개] - 질문으로 공부하는

by it-수다쟁이증후군 2023. 4. 4.

오늘.ssam)
지난 포스트 1장(변수-자료형-연산자) , 2장(제어문-if-for-while) , 3장(함수-인자-반환값) 까지 기초였다면, 이번 포스트에서는 기초에서 쪼끔 더 올라갑니다.바로 순서 자료형의 대표주자 리스트와 튜플 입니다. 본격적인 내용에 들어가기에 앞서 도대체 리스트와 튜플이 무엇인지 개념부터 정리 하겟습니다. 추가로 리스트와 튜플이 구체적으로 어디에 쓰이는 지도 알아 보겟습니다.

Q1.나)
리스트와 튜플이 무엇인지 간단히 설명해주세요.

"4-리스트-튜플-기초개념정리" 문장을 타이포그라피로 만든 썸네일
시작합니다.

A1.ssam)
Sure!

  1. 리스트(list)는 순서가 있는 자료형으로, 대괄호([]) 안에 요소를 쉼표(,)로 구분하여 넣어준다.
  2. 튜플(tuple)도 순서가 있는 자료형으로, 소괄호(()) 안에 요소를 쉼표(,)로 구분하여 넣어준다.
  3. 리스트는 값을 변경할 수 있지만, 튜플은 값을 변경할 수 없다.
  4. 리스트는 []로 선언하고, 튜플은 ()로 선언한다.
  5. 리스트는 대괄호 안에 쉼표로 구분된 값들이 들어가고, 튜플은 소괄호 안에 쉼표로 구분된 값들이 들어간다.
  6. 리스트는 변경 가능(mutable)한 자료형이며, 튜플은 변경 불가능(immutable)한 자료형이다.

리스트 선언 예시 입니다.

my_list = [1, 2, 3, 4, 5]

튜플 선언 예시 입니다.

my_tuple = (1, 2, 3, 4, 5)

Q2.나)
변경가능 한거랑 변경 불가능이 중요한가요?

A2.ssam)
네, 리스트와 튜플의 가장 큰 차이점 중 하나는 변경 가능성입니다. 리스트는 값이 변경 가능하며, 튜플은 값이 변경 불가능합니다. 따라서 데이터를 변형시키지 않고 그대로 유지하고 싶은 경우에는 튜플을 사용하고, 변경이 필요한 경우에는 리스트를 사용하는 것이 좋습니다.

Q3.나)
사용자가 바꾸지 않는다면 개념적으로는 리스트가 곧 튜플이 되는거 아닌가요? 구분할 필요가 있나요? 범용성에만 따지면 그냥 리스트만 주구장창 써도 될것 같은데요?

A3.ssam)
겉으로 보이는 모습으로는 충분히 그렇게 생각할수 있습니다. 하!지!만! 가장 큰 차이점이 있습니다. 바로 속도와 메모리! 처리해야 할 데이터 양이 적을 때는 별반 차이가 없지만 데이터 처리양이 커지면 커질수록 속도의 차이는 많이 납니다.  특히 메모리는 정수 100만개 기준으로 리스트 37Mb정도 차지하지만 튜플은 8Mb 정도 차지합니다.

그러니 변경할 필요없는, 변경해서 안되는 자료는 튜플을 사용하는것이 훨씬 이득힙니다.

Q4.나)
리스트와 튜플의 간단히 코드를 통해 비교해주세요.

A4.ssam)

1.리스트와 튜플의 생성

# 1.리스트 생성
lst = [1, 2, 3]

# 1.튜플 생성
tpl = (4, 5, 6)

2.인덱싱과 슬라이싱

# 1. 리스트 생성
lst = [1, 2, 3]

# 1. 튜플 생성
tpl = (4, 5, 6)


# 2-1. 리스트 인덱싱
lst[0]
print(lst[0])
#출력 결과 : 1

# 2-1. 튜플 인덱싱
tpl[1]
print(tpl[1])
#출력 결과 : 5

# 2-2. 리스트 슬라이싱
lst[1:3]
print(lst[1:3])
#출력 결과 : [2, 3]

# 2-2. 튜플 슬라이싱
tpl[:2]
print(tpl[:2])
#출력 결과 : (4, 5)

3.값을 변경할 수 있는지 여부

# 3.리스트 변경 가능
lst = [1, 2, 3]
lst[0] = 4
print(lst)  

#출력 결과 : [4, 2, 3]



# 3. 튜플 변경 불가능 
tpl = (1, 2, 3)
tpl[0] = 4

# 출력 결과 : TypeError 발생

4.리스트와 튜플의 연산

# 4.리스트 연산
lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
lst3 = lst1 + lst2
print(lst3)  

#출력 결과 : [1, 2, 3, 4, 5, 6]



# 4. 튜플연산
tpl1 = (1, 2, 3)
tpl2 = (4, 5, 6)
tpl3 = tpl1 + tpl2
print(tpl3)  

#출력 결과 : (1, 2, 3, 4, 5, 6)

5.리스트와 튜플의 함수

# 5. 리스트 함수
lst = [1, 2, 3]
lst.append(4)
print(lst)  

#출력 결과 : [1, 2, 3, 4]



# 5. 튜플 함수: count와 index만 사용 가능
tpl = (1, 2, 3, 3)
print(tpl.count(3))
print(tpl.index(2))

#출력 결과 : 2
#출력 결과 : 1

Q5.나)
인덱싱과 슬라이싱에 대해서 알려주세요..

A5.ssam)
간단합니다. 리스트와 튜플는 순서있는 자료형 입니다. 한마디로 순서가 매겨진 정보의 덩어리 입니다. 이 정보의 덩어리 통째로 매번 사용 하는것보다 필요한 부분만 가져 오는데 편하겟죠.

인덱싱은 이 순서를 기준으로 정보 덩어리에서 하나씩 빼내오는 방법입니다. 슬라이싱은 하나 씩은 귀찮으니 몇번째 부터 몇번째 까지 작은 정보 덩어리로 잘라내는 방법입니다.

Q6.나)
튜플과 리스트의 각각의 상대적 장단점을 비교분석해주세요

A6.ssam)
튜플과 리스트는 모두 여러 개의 값을 저장할 수 있는 시퀀스 자료형이지만, 다음과 같은 차이점이 있습니다.

튜플의 장점:

  1. 값을 변경할 수 없기 때문에 불변성(immutable)이 보장됩니다.
  2. 값이 변하지 않는 경우에는 리스트보다 메모리를 적게 사용합니다.
  3. 함수의 인자로 튜플을 전달하면, 값을 변경할 수 없기 때문에 예기치 않은 오류를 방지할 수 있습니다.

튜플의 단점:

  1. 값을 변경할 수 없기 때문에 값을 수정하려면 새로운 튜플을 생성해야 합니다.
  2. 값이 변하지 않는 경우에도 추가, 삭제 등의 연산이 불가능합니다.

리스트의 장점:

  1. 값을 변경할 수 있기 때문에 값을 추가, 수정, 삭제할 수 있습니다.
  2. 여러 가지 연산을 지원하기 때문에 다양한 용도로 사용할 수 있습니다.

리스트의 단점:

  1. 값을 변경할 수 있기 때문에 불변성이 보장되지 않습니다.
  2. 값이 변하는 경우 메모리 사용량이 증가할 수 있습니다.
  3. 함수의 인자로 리스트를 전달하면, 함수 내에서 값이 변경될 가능성이 있어서 예기치 않은 오류가 발생할 수 있습니다.

이제 어느정도 리스트와 튜플에 대해서 감이 잡힐겁니다. 그런데 무엇을 써야 할지 헷갈리기 시작 할겁니다. 제가 그랬거든요. 이래도 될것 같고 저래도 될것 같고. ^^ 이럴땐 기준이 하나 세우는 것이 좋습니다.

값이 변하지 않는 경우에는 튜플!,
값이 변하는 경우에는 리스트!.

Q7.나)
개념적으로 약간 이해가 가는것 같은데 구체적으로 리스트와 튜플이 어디에 쓰이는지 감이 잡히지 않아요. 예시를 들어주세요.

A7.ssam)
리스트(List)가 쓰이는곳 튜플이 쓰이는곳 예시를 알려드리겟습니다.

리스트 예시 50개

  1. 학생들의 출석부
  2. 쇼핑몰의 상품 목록
  3. 스마트폰의 연락처 목록
  4. 온라인 강의의 수강생 목록
  5. 전자책의 목차
  6. 웹사이트의 메뉴 목록
  7. 음악 플레이어의 재생목록
  8. 교통 신호등 정보 목록
  9. 블로그의 포스트 목록
  10. 팀원들의 작업 목록
  11. 영화 리뷰 목록
  12. 요리 레시피 목록
  13. 대여한 도서 목록
  14. 여행 계획 목록
  15. 영화 티켓 예매 정보 목록
  16. 비디오 게임 기록 목록
  17. 주문한 음식 목록
  18. 학교 수업 일정 목록
  19. 캘린더 일정 목록
  20. 로또 번호 목록
  21. 핸드폰 앱 목록
  22. 버스 노선 정보 목록
  23. 노래 가사 목록
  24. 택배 배송 정보 목록
  25. 휴대폰 게임 랭킹 목록
  26. 의약품 복용 정보 목록
  27. 뉴스 기사 목록
  28. 코인 뉴스 목록
  29. 판매중인 중고 물품 목록
  30. 자신이 보유한 주식 목록
  31. 인스타그램 팔로우 목록
  32. 사용 중인 컴퓨터 프로그램 목록
  33. 나만의 음악 추천 목록
  34. 강아지 산책 일지 목록
  35. 여행 계획 일정 목록
  36. 주변 맛집 정보 목록
  37. 색을 담은 리스트
  38. 대상 물품의 위치 목록
  39. 이력서 작성 목록
  40. 프로그래밍 언어 사용 목록
  41. 주변 지하철 역 목록
  42. 마일리지 적립 목록
  43. 카페 메뉴 목록
  44. 사용 중인 자동차 부품 목록
  45. 취미 활동 일지 목록
  46. 팀원들의 연락처 목록
  47. 집안에서 필요한
  48. 쇼핑몰에서 주문한 상품 목록
  49. 연락처 주소록 목록
  50. 토익 시험 점수 목록

튜플 예시 50개

  1. 지리 정보 (위도, 경도)
  2. 측정된 기상 데이터 (온도, 습도, 기압)
  3. 프로젝트 일정 (시작일, 종료일)
  4. 학교 시험 일정 (월, 일, 과목)
  5. 운동 기록 (운동 종류, 거리, 시간)
  6. 각종 코디네이트 정보 (x, y, z)
  7. 선수의 기록 (득점, 어시스트, 파울, 옐로카드, 레드카드)
  8. 색상 정보 (RGB 값)
  9. 음식 메뉴의 재료 정보 (재료1, 재료2, 재료3)
  10. GPS 위치 정보 (위도, 경도, 고도)
  11. 국가별 인구수 (국가, 인구수)
  12. 지역별 평균 연봉 (지역, 평균 연봉)
  13. 여행 일정 (출발일, 도착일, 도시)
  14. 지하철 노선 정보 (노선명, 구간)
  15. 컴퓨터 시스템 정보 (CPU, 메모리, 하드 디스크)
  16. 담배 제품 정보 (제품명, 담배 함량)
  17. 생일 (월, 일, 연도)
  18. 나라별 화폐 단위 (나라, 화폐 단위)
  19. 음식의 영양소 정보 (칼로리, 단백질, 지방, 탄수화물)
  20. 지역별 코로나19 확진자 수 (지역, 확진자 수)
  21. 구매한 전자제품 정보 (제품명, 가격, 제조사)
  22. 건강 검진 결과 (신장, 체중, 혈압)
  23. 각국의 수도 정보 (국가, 수도)
  24. 성격 유형 (성격 유형명, 설명)
  25. 계절별 날씨 정보 (계절, 기온, 강수량)
  26. 우주 탐사 미션 정보 (미션 명, 날짜, 장소)
  27. 별자리 정보 (별자리 명, 위치)
  28. 노래 가사 (가수, 노래 제목, 가사)
  29. 꽃 이름 및 꽃말 정보 (꽃 이름, 꽃말)
  30. 다양한 과일
  31. 각종 운송 수단의 정보 (이름, 용도, 색상)
  32. 동물 정보 (동물 종류, 크기, 먹이)
  33. 음악 장르 정보 (장르명, 대표 가수)
  34. 가족 구성원 정보 (이름, 생년월일, 관계)
  35. 영화 정보 (영화 제목, 감독, 배우)
  36. 축구 경기 결과 (경기 일시, 팀 A 점수, 팀 B 점수)
  37. 화학 원소 정보 (원소 기호, 원소 이름, 원자 번호)
  38. 방문한 나라 정보 (나라, 방문일자)
  39. 도시의 기후 정보 (도시, 기온, 습도, 강수량)
  40. 여행 코스 정보 (코스 이름, 방문 도시, 일자)
  41. 프로그래밍 언어의 구문 구조 (언어 이름, 구문 구조)
  42. 체육 대회의 순위 정보 (대회 이름, 참가팀, 순위)
  43. 판매 중인 차량 정보 (모델명, 가격, 최대 마력)
  44. 스포츠 경기 일정 (경기 일시, 팀 A, 팀 B)
  45. 휴대폰 출시 정보 (모델명, 출시일, 운영체제)
  46. 와인 정보 (와인 종류, 원산지, 향)
  47. 자동차 모델 정보 (모델명, 최고 속도, 가격)
  48. 음악 플레이어의 플레이리스트 (제목, 가수, 앨범)
  49. 가구 구성품 정보 (제품명, 재질, 크기)
  50. 국가별 국기 정보 (국가, 국기 이미지)

댓글