파이썬 | 리스트와 튜플

CHOI·2021년 10월 19일
0

Python

목록 보기
6/33
post-thumbnail

1. 리스트

지금까지는 변수를 하나씩 작성했는데 만약에 100개의 값을 저장하려면 어떻게 할까? 일일이 변수 100개를 설정해야할까? 그것은 너무 복잡하고 비효율적이다. 이럴때 사용하는 것이 바로 리스트이다.

>>> a = [1,2,3,4,5]
>>> a
[1, 2, 3, 4, 5]

리스트는 변수의 값을 대괄호로 묶어주고 콤마로 구분해주면 된다.

리스트의 여러가지 자료형

파이썬에서는 리스트에 여러가지 자료형들을 한 번에 넣을 수 있다.

>>> jack = ['jack', 24, 180, True]
>>> jack
['jack', 24, 180, True]

빈 리스트 만들기

>>> a = []
>>> a
[]
>>> b = list()
>>> b
[]
  • 대괄호에 아무것도 넣지 않기 []
  • list() 사용

range 를 사용한 리스트 만들기

range 함수는 연속된 숫자를 생성한다. range(10) 을 하게되면 숫자 0부터 9까지를 생성한다. 여기서 주의해야할 점은 지정한 숫자는 포함되지 않는다. 여기에서는 10 이 포함되지 않고 0부터 9까지 생성된다는 말이다.

>>> range(10)
range(0, 10)

이제 range 함수로 생성된 숫자를 리스트에 넣어보자.

>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

위와 같이 list 함수를 통해서 넣어주면 된다.

>>> b = list(range(5, 15))
>>> b
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

이렇게 range 함수는 시작과 끝을 지정해줄 수 있고

>>> c = list(range(-5, 5, 2))
>>> c
[-5, -3, -1, 1, 3]

이렇게 증가폭도 사용할 수 있다. 물론 증가폭으로 음수를 넣으면 시작값부터 끝값까지 감소하는 숫자를 생성한다.

2. 튜플

지금까지는 리스트를 사용해봤는데 파이썬에서는 튜플이라는 자료형도 제공한다.

튜플은 리스트처럼 요소들을 일렬로 저장하지만 안에 저장된 요소를 추가, 변경, 삭제할 수 없다. 즉 간단하게 읽기 전용 리스트라고 볼 수 있다.

튜플은 값을 저장할 때 () 괄호로 묶어주면된다. 또한 괄호로 묶어주지 않고 값을 콤마로 구분만해도 튜플이 된다.

>>> a = (5, 12, 6, 30)
>>> a
(5, 12, 6, 30)

>>> b = 9, 434, 3, 6
>>> b
(9, 434, 3, 6)
>>> jack = ('jack', 24, 180, True)
>>> jack
('jack', 24, 180, True)

또한 튜플도 여러가지 자료형을 사용할 수 있다.

그렇다면 굳이 수정이 안되는 튜플을 왜 사용할까? 이유는 간단하다 파이썬 프로그래밍에서는 튜플을 사용하는 것이 더 유리한 경우가 있기 때문이다. 보통 튜플은 절대 변하면 안되는 요소를 필요로 할 때 사용한다.

요소가 한 개인 튜플

지금까지는 튜플에 여러개의 값을 넣었는데 그렇다면 요소가 한 개인 튜플은 어떻게 만들까?

>>> (20)
20

위와 같이 그냥 괄호에 하나의 요소만 넣으면 될 줄 알았는데 이는 '튜플'이 아니라 그냥 '값' 이다.

요소가 한 개인 튜플을 만들기 위해서는 요소와 콤마를 붙여줘야 한다.

>>> (38, )
(38,)
>>> 38,
(38,)

그런데 한 개의 튜플은 어디에 필요할까? 함수(클래스)를 사용하다가 보면 값이 아닌 튜플을 넣어야 하는 경우가 생기는데 이때 하나의 튜플만 넣어야할 때 위와 같이 튜플을 만들고 넣어주면 된다.

range를 사용하여 튜플 만들기

>>> a = tuple(range(10))
>>> a
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

range 를 사용하여 튜플을 만들 때에는 list 가 아니라 tuple 을 사용하면 된다.

이 또한 마찬가지로 시작, 끝, 증가폭을 넣어줄 수 있다. (tuple(range(0, 10, 2)))

튜플 ↔ 리스트

튜플과 리스트는 요소를 변경, 추가, 삭제할 수 있는지에 차이만 있을 뿐 다른 기능이나 형태는 똑같다. 따라서 튜플을 리스트로 만들거나 리스트를 튜플로 만들 수 있다.

튜플 → 리스트

>>> a = (5, 4, 3)
>>> a
(5, 4, 3)
>>> list(a)
[5, 4, 3]

리스트 → 튜플

>>> b = list(range(10, 0, -2))
>>> b
[10, 8, 6, 4, 2]
>>> tuple(b)
(10, 8, 6, 4, 2)

문자열

문자열을 튜플이나 리스트에 넣으면 어떻게 될까?

>>> list('Hello')
['H', 'e', 'l', 'l', 'o']
>>> tuple('Hello')
('H', 'e', 'l', 'l', 'o')

문자열의 한 글자 씩 하나의 요소가 된다.

리스트와 튜플로 변수 만들기

>>> a, b, c = [1, 2, 3]
>>> print(a, b, c)
1 2 3
>>> d, e, f = (4, 5, 6)
>>> print(d, e, f)
4 5 6

리스트나 튜플을 이용하면 여러개의 변수를 한 번에 지정할 수 있다. 이때 변수의 개수와 요소의 개수는 같아야 한다.

>>> x = [1, 2, 3]
>>> a, b, c = x
>>> print(a, b, c)
1 2 3
>>> y = (4, 5, 6)
>>> d, e, f = y
>>> print(d, e, f)
4 5 6

이와 같이 리스트나 튜플의 요소들로 변수 여러 개에 할당하는 것을 리스트 언패킹(list unpacking), 튜플 언패킹(tuple unpacking) 이라고 한다.

>>> input().split()
10 20
['10', '20']
>>> x = input().split()
10 20
>>> x
['10', '20']
>>> a, b = x
>>> b
'20'
>>> a
'10'

사실 앞서 우리가 input().split() 을 통해서 값을 입력 받았을 때 리턴 된 값은 리스트이다. 그래서 우리는 리스트 언패킹 형식으로 각 값을 변수에 대입한 것이다.

a = [1, 2, 3]    # 리스트 패킹
b = (1, 2, 3)    # 튜플 패킹
c = 1, 2, 3      # 튜플 패킹

그리고 리스트 패킹(list packing)튜플 패킹(tuple packing)은 변수에 리스트나 튜플을 할당하는 과정을 뜻한다.

profile
벨로그보단 티스토리를 사용합니다! https://flight-developer-stroy.tistory.com/

0개의 댓글