본문 바로가기
코딩

Python 의 List 와 Tuple

by 눈표범  2021. 7. 13.

List

가장 일반적인 iterable 자료형이라고 했습니다. List는 값을 다루는 부분에 있어 매우 자유롭습니다. List를 만들 때는 아래처럼 대괄호([ ])로 감싸 주고 각 요소들은 쉼표로 구분합니다.

l = []
# 빈 리스트

l = [1, 2, 3]
# 대괄호로 감싸고, 쉼표로 구분

l = [1, 2, 'hi!']
# 어떤 자료형이든 사용할 수 있음

l = [1, 2, [1, 2, 3]]
# 다중 리스트

l.append(4)
# 값 추가

print(l)
# [1, 2, [1, 2, 3], 4]

view rawlist.py hosted with ❤ by GitHub

 

 

인덱싱과 슬라이싱

 

Python에선 List에 접근하기 위해 타 프로그래밍 언어들의 배열 접근 방식과 비슷한 인덱싱이라는 개념을 지원하고, 추가적으로 슬라이싱이라는 개념도 있습니다. 이 둘을 이용해 각 요소에 접근하고, 특정 집합을 잘라낼 수 있습니다. 대부분의 프로그래밍 언어에서 이와 같은 인덱싱은 보통 zero-based numbering(0부터 시작)한다는 것을 참고하기 바랍니다.

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


# --- Indexing ---
print(l[1])
# 2

print(l[-1])
# 5
# 음수 인덱스는 맨 마지막 요소를 기준으로 인덱싱(-1이 마지막 요소, -2가 마지막에서 두 번째 요소, ...)

l
[1] = 3
# 요소 수정

del l[1]
# 요소 삭제



# --- Slicing ---
print(l[0:3])
# [1, 2, 3]
# [n:m] 형태로 슬라이싱, n번째 요소부터 m-1번째 요소까지를 리스트로 리턴

print
(l[:3])
# [1, 2, 3]
# 슬라이싱의 0은 생략 가능

print
(l[:])
# [1, 2, 3, 4, 5]

print
(l[1:-1])
# [2, 3, 4]
# 음수 인덱스를 이용한 슬라이싱도 가능

view rawlist-indexing-slicing.py hosted with ❤ by GitHub

del이라는 키워드를 사용했는데, 제대로 이해하려면 매직 메소드라는 개념을 알아야 하므로 여기서는 'Iterable 객체의 특정 요소를 제거하기 위한 키워드'라고만 이해하고 넘어가도록 합시다.

 

 

합과 곱

 

Python의 List는 서로 합하고, 정수와 곱할 수 있습니다.

print([1, 2, 3] + [8, 9])
# [1, 2, 3, 8, 9]

print([1, 2, 3] * 3)
# [1, 2, 3, 1, 2, 3, 1, 2, 3]

view rawlist-sum-mul.py hosted with ❤ by GitHub

값이 모두 n이고 길이가 m인 리스트 만들기

List의 곱을 이용해 값이 모두 n이고 길이가 m인 리스트를 만들 수 있습니다. [n] * m 코드를 사용하면 됩니다.

print([0] * 100)
# [0, 0, 0, ..., 0]

view rawinitialized-list.py hosted with ❤ by GitHub

 

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

 

Tuple

Tuple은 Read-only(불변) List라고 생각할 수 있습니다. List처럼 나열된 값을 다루지만, 한 번 선언되고 나면 값의 생성, 수정, 삭제가 불가능합니다.

t = ()
# 빈 튜플

t = (1, 2, 3)
# 소괄호로 감싸고, 쉼표로 구분

t = 1, 2, 3
# 소괄호 생략

t = (1, 2, 'hi!')
# 어떤 자료형이든 사용할 수 있음

t = (1, 2, (1, 2, 3))
# 다중 튜플

t = (1,)
# 값이 하나 뿐인 튜플

t = 1,
# 소괄호 생략

print(t)
# (1,)

view rawtuple.py hosted with ❤ by GitHub

 

 

인덱싱과 슬라이싱

 

Tuple도 List와 동일한 형태의 인덱싱과 슬라이싱이 가능합니다.

t = 1, 2, 3, 4, 5

# --- Indexing ---
print(t[-2])
# 4


# --- Slicing ---
print(t[1:-2])
# (2, 3)

view rawtuple-indexing-slicing.py hosted with ❤ by GitHub

합과 곱

Tuple도 서로 합하고 정수와 곱할 수 있습니다. 합과 곱은 해당 연산의 결과를 리턴하므로, 실제 튜플에는 변동이 생기지 않기 때문에 Read-only의 룰을 위반하지 않으므로 가능한 것입니다.

print((1, 2, 3) + (8, 9))
# (1, 2, 3, 8, 9)

print((1, 2, 3) * 3)
# (1, 2, 3, 1, 2, 3, 1, 2, 3)

view rawtuple-sum-mul.py hosted with ❤ by GitHub

 

 

 

 

출처 : https://planbs.tistory.com/entry/Python-Iterable-%EC%9E%90%EB%A3%8C%ED%98%95-List-Tuple

 

'코딩' 카테고리의 다른 글

BeautifulSoup4 크롤링 사용법 정리  (0) 2021.07.13
데이터 구조  (0) 2021.07.13
JSON 이란?  (0) 2021.07.13
디렉토리(directory)  (0) 2021.07.11
join()  (0) 2021.07.10

댓글