본문 바로가기
백엔드(Back-End)/Python

[Python] - 자료형 - 리스트(List)

by TwoJun 2022. 8. 15.

[Programming Language ] - Python

 

 

이번 포스팅에선 Python의 자료형 중 하나인 리스트(List)에 대해 알아보도록 하겠습니다.

 

 

1. 수 - 정수형(Integer), 실수형(Float), 복소수(Complex number)

2. 문자열(String)

3. Boolean 타입 (True, False)

4. 리스트(List)

5. 튜플(Tuple)

6. 딕셔너리(Dictionary)

7. 집합(Set)

 

 

 

1. 리스트(List)

-  여러 타입의 데이터들이 연속적으로 정렬되어 저장될 수 있는 자료형으로 하나의 변수에 여러 가지 데이터를 저장할 때 사용합니다.

 

 

 

 

2. 리스트의 특징

2-1.

- [] (대괄호)를 사용하여 데이터를 저장한다.

 

# 기본적인 List의 형태
list = [1, 2, "Python", "Java", "Javascript"]
# 리스트의 특정 원소에 접근 
list = [1, 2, "Python", "Java", "Javascript"]
print(list[2])    # Python

 

 

 

2-2.

리스트에 또 다른 리스트를 추가할 수 있다. 

# 중복 리스트를 선언하고 중복 리스트 원소 "Python2"에 접근
list = [1, 2, "Python", ["Python1", "Python2"], "Java", "Javascript"]
print(list[3][1])    # Python2

 

 

 

 

3. 리스트 인덱싱(Indexing)

- 문자열에서 인덱싱을 사용한 것처럼, 리스트에서도 인덱싱(Indexing)이 가능하다.

# 리스트의 Indexing
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list[0])     #1
print(list[-2])    #9
list_sum = list[0] + list[-2]
print(list_sum)    #10

 

 

 

4. 리스트 슬라이싱(Slicing)

- 리스트에서도 슬라이싱(Slicing)을 사용할 수 있다.

- 슬라이싱한 결과값에 대해 새로운 리스트에 저장한다.

# 리스트의 Slicing
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list[0:2:])    # [1, 2]
print(list[2:])     # [3, 4, 5, 6, 7, 8, 9, 10]
print(list[0:10:2])    # [1, 3, 5, 7, 9]

 

 

 

5. 리스트 더하기, 반복하기

5-1. 

- 문자열처럼 리스트끼리 서로 더할 수 있다.

- 더해진 리스트들을 하나의 리스트에 저장한다.

# 리스트 더하기
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list2 = [11, 12]
print(list1 + list2)    # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

 

 

5-2.

- 문자열처럼 리스트도 여러 번 반복하여 나타낼 수 있다.

- 마찬가지로 결과값을 하나의 리스트에 저장한다.

# 리스트 반복하기
list2 = [11, 12]
print(list2 * 5)     # [11, 12, 11, 12, 11, 12, 11, 12, 11, 12]

 

 

 

 

6. 리스트에서 특정 원소의 값 수정하기

6-1.

- 리스트에서 특정 인덱스에 해당하는 원소의 값을 변경할 수 있다.

# 리스트에서 특정 인덱스에 해당하는 원소 변경하기
list = [1, 2, "Python", "Java", "Javascript"]
list[2] = "Python is fun!"
print(list)    # [1, 2, 'Python is fun!', 'Java', 'Javascript']

 

 

6-2.

- 슬라이싱을 이용하여 특정 구간에 해당하는 모든 원소들을 변경할 수 있다.

- 슬라이싱을 통해 다수의 값을 변경하는 경우 [] (대괄호) 안에 변경할 값을 모두 담아 한 번에 변경한다.

# 슬라이싱을 이용하여 특정 구간에 해당하는 모든 원소들을 변경할 수 있다.
list = [1, 2, "Python", "Java", "Javascript"]
list[0:2:] = ["Python1", "Python1"]
print(list)    # ['Python1', 'Python1', 'Python', 'Java', 'Javascript']

 

 

6-3.

- 슬라이싱으로 [] (빈 대괄호 : 원소 없음)을 이용하여 리스트의 요소를 삭제할 수 있다.

# 리스트의 원소 삭제하기 - 슬라이싱으로 [] 빈 대괄호 이용
list = [1, 2, "Python", "Java", "Javascript"]
list[1:2] = []
print(list)    # [1, 'Python', 'Java', 'Javascript']

 

 

6-4.

- del() 함수를 이용해서 리스트의 요소를 삭제할 수 있다.

# 리스트의 원소 삭제하기 - del() 함수 이용
list = [1, 2, "Python", "Java", "Javascript"]
del(list[0])
print(list)      # [2, 'Python', 'Java', 'Javascript']

# 슬라이싱 이용
del(list[0:1:])    
print(list)     # ['Python', 'Java', 'Javascript']

 

 

 

 

7. 리스트 자료형에서 사용되는 여러 가지 함수

- 리스트 자료형에서는 리스트에 저장된 데이터들을 관리하기 위해 아래와 같은 여러 가지 함수를 제공합니다.

 

7-1.

- append() : 리스트의 마지막 인덱스의 바로 다음 인덱스에 특정 원소를 추가한다.

- 문법 : 리스트명.append("추가할 원소")

# append()
list_number = [1, 2, 3, 4, 5]

# append() 함수는 마지막에 한 개의 원소만 추가할 수 있다. (두 개 이상 추가 시 오류 발생)
# list_number.append(6, 7)    #  TypeError: list.append() takes exactly one argument (2 given)

list_number.append("python")
print(list_number)     # [1, 2, 3, 4, 5, 'python']

 

 

7-2.

- insert() : 리스트의 특정 인덱스에 데이터를 삽입한다.

- 문법 : 리스트명.insert(인덱스 넘버, "추가할 원소")

# insert()
list_kakao_members = ["Lion", "Apeach", "Muzi"]
list_kakao_members.insert(1, "Neo")
print(list_kakao_members)     # ['Lion', 'Neo', 'Apeach', 'Muzi']

# 정수 추가
list_kakao_members.insert(1, 10)
print(list_kakao_members)    # ['Lion', 10, 'Neo', 'Apeach', 'Muzi']

 

 

7-3.

- sort() : 데이터를 규칙에 맞게 정렬할 수 있는 함수 

- 문법 : 리스트명.sort()

- 문자(한글)의 경우 자음 순서인 ㄱ, ㄴ, ㄷ ... 순으로 데이터 정렬

- 수의 경우 수의 크기 순으로 데이터 정렬

# sort()
# 정수가 담긴 리스트의 정렬
list_number = [1, 2, -10, 30, 49]
list_number.sort()
print(list_number)    #  [-10, 1, 2, 30, 49]

# 문자가 담긴 리스트 정렬
list_alphabet = ['p', 'y', 't', 'h', 'o', 'n']
list_alphabet.sort()
print(list_alphabet)   # ['h', 'n', 'o', 'p', 't', 'y']

# 문자열이 담긴 리스트의 정렬
list_dictionary = ["apple", "cat", "buyer"]
list_dictionary.sort()
print(list_dictionary)    #   ['apple', 'buyer', 'cat']

 

 

7-4.

- reverse() : 리스트 내부의 원소들을 기존 정렬된 방향의 역순으로 정렬하는 함수

- 문법 : 리스트명.revese()

# reverse()
list_kakao_members = ["Lion", "Apeach", "Muzi"]
list_kakao_members.reverse()
print(list_kakao_members)     # ['Muzi', 'Apeach', 'Lion']

 

 

7-5.

- index() : 리스트 내에서 특정 원소가 몇 번째 인덱스에 위치하는지 인덱스 번호를 반환하는 함수

- 문법 : 리스트명.index("탐색할 원소")

# index()
list_kakao_members = ["Lion", "Apeach", "Muzi"]
print(list_kakao_members.index("Lion"))      # 0

 

 

7-6.

- remove() : 리스트 내에서 특정 원소를 삭제하는 함수

- 문법 : 리스트명.remove("삭제할 원소")

- 삭제할 대상이 중복으로 다수 존재하는 경우, 제일 먼저 탐색된 인덱스의 원소를 찾아 삭제합니다.

# remove()
list_kakao_members = ["Lion", "Apeach", "Apeach", "Muzi"]

# 리스트의 원소 중 하나인 "Apeach"를 해당 리스트에서 삭제
# Apeach가 모두 삭제되지 않고 먼저 탐색된 1번 인덱스의 원소 삭제
list_kakao_members.remove("Apeach")
print(list_kakao_members)     # ['Lion', 'Apeach', 'Muzi']

 

 

7-7.

- pop() : 리스트에서 가장 마지막에 있는 원소를 꺼내어 해당 원소를 반환하는 함수

- 문법 : 리스트명.pop()

# pop()
list_number = [1, 2, -10, 30, 49]

# pop() 함수로 마지막 인덱스의 원소 반환
print(list_number.pop())     #49
print(list_number)    # [1, 2, -10, 30]

 

 

7-8.

- count() : 리스트에서 특정 원소가 몇 개인지 개수를 반환하는 함수

- 문법 : 리스트명.count("탐색할 원소")

# count()
list_kakao_members = ["Lion", "Apeach", "Apeach", "Muzi"]
print(list_kakao_members.count("Apeach"))    # 2
print(list_kakao_members.count("Muzi"))      # 1

 

 

7-9.

- extend() : 기존 리스트에 또 다른 리스트를 추가하여 하나의 리스트를 생성하는 함수

- 문법 : 리스트명.extend(["추가할 원소1, "추가할 원소2"... ])

- 매개변수로 추가할 원소들의 모임은 [] (대괄호)로 묶어서 리스트의 형태로 전달한다.

# extend()
list_kakao_members = ["Lion", "Apeach", "Muzi"]
list_kakao_members.extend(["Neo", "Con"])
print(list_kakao_members)     # ['Lion', 'Apeach', 'Muzi', 'Neo', 'Con']

 

 

 

 

이번 포스팅에선 Python의 자료형 중 하나인 리스트(List)와 특징, 리스트에서 자주 사용되는 함수에 대해 알아보았습니다.

다음엔 튜플(Tuple) 자료형에 대해 학습해 보도록 하겠습니다.

 

======================================================================

해당 포스팅에 대해 내용 추가가 필요하다고 생각되면 기존 포스팅 내용에 다른 내용이 추가될 수 있습니다.

개인적으로 공부하며 정리한 내용이기에 오타나 틀린 부분이 있을 수 있습니다.

이에 대해 지적해 주시면 감사하겠습니다.

 

 

 

 

댓글