본문 바로가기

Programming/python

__파이썬__.py(리스트와 튜플).feat(시퀀스 자료형, 가변, 불변)

728x90
반응형

파이썬에는 시퀀스 자료형이 있다.

 

시퀀스 자료형은 단어 그 자체에서도 알 수 있듯이 연속적인 값으로 이루어져 있다.

연속적이란 말은 각 값마다 인덱스의 숫자가 할당되어 있어 인덱싱이 가능하다는 것이다.

 

우선 리스트를 살펴보자.


리스트(list) - 가변(mutable)

 

리스트(list) 자료형은 다음과 같이 나타낼 수 있다.

 

 

1. 대괄호로 나타내는 기본적인 리스트

_list = ['Beer', 'Soju', 'Rice Whiskey']

print(_list)

['Beer', 'Soju', 'Rice Whiskey']

 

참고로 한 변수안에 쉼표(,)를 사용해 여러 개의 리스트를 넣을 수 있다.

 

_list = ['Beer', 'Soju', 'Rice Whiskey'],['오 막걸리 좋아요!', '가자~']

print(_list)

(['Beer', 'Soju', 'Rice Whiskey'], ['오 막걸리 좋아요!', '가자~'])

 

그럼 이럴 때 내가 두 번째 리스트 '가자~!'를 출력할 때는 어떻게 해야 할까?

 

_list = ['Beer', 'Soju', 'Rice Whiskey'],['오 막걸리 좋아요!', '가자~']

print(_list[1][1])

가자~

 

그럴 때는 위 처럼, 2번 째 인덱스[1]과 그 안의 2번 째 요소 인덱스[1]을 넣어주면 된다.

(인덱스 번호는 0부터 시작한다. 그렇기에 2가 아니라 1이다.)

 


 

2. 컴프리헨션(comprehension)을 사용해서 나타내기

 

 

우선 1부터 10까지를 담는 리스틀를 생성해보자.

_list = [x for x in range(1, 11)]

print(_list)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

컴프리헨션을 사용하면 굳이 for문 while문 같은 반복문을 변수 바깥에서 사용할 필요 없이 바로 변수 선언이 가능하다. 개꿀


또는 이중 배열을 사용할 수도 있다. (경우의 수 같은 문제 풀 때 개꿀)

 

_list = [(x, y) for x in range(1, 11) for y in range(1, 11)]

print(_list)
print(len(_list))

위에는 1부터 10까지 조합으로 각각 나타낼 수 있는 조합이 출력됐고, 밑에는 총 경우 수가 출력됐다.

 

*코드의 맨 마지막에 사용한 len() 함수는 변수의 길이를 반환해주는 역할을 한다.

 


 

튜플(tuple) - 불변(immutable)

 

리스트는 생성 된 후 추가나 삭제에 의해 값이 변경되는 특징을 가지고 있지만(가변),

튜플은 한 번 선언이되면 프로그램 실행내에서 값을 변경 할 수 없다(불변).

 

1. 소괄호로 나타내는 튜플

 

대괄호로 나타내는 리스트와 달리 튜플은 소괄호로 나타낸다. like this

 

_tuple = (73, "Sheldon Cooper")

print(_tuple)

(73, Sheldon Cooper) 

 

만약 내가 저기서 Sheldon Cooper라는 문자열만 출력하고 싶다면?

인덱스를 활용하자.

_tuple = (73, "Sheldon Cooper")

print(_tuple[1])

Sheldon Cooper

 

그럼 또 만약 내가 Sheldon Cooper에서 이름인 Sheldon만 출력하고 싶다면?

_tuple = (73, "Sheldon Cooper")

print(_tuple[1][0:8])
print(_tuple[1][:-7])

Sheldon

Sheldon

 

다양한 방법으로 출력 가능하다.

 


2. immutable한 튜플

 

리스트는 가변적인 특성을 가지고 있는 반면, 튜플은 불가변성의 특성을 가지고 있다.

 

예를 들어보자.

 

_list = [3]

_list[0] = 7

print(_list)

[7]

리스트의 경우에는 초기에 '3'이라고 설정되어 있어도 나중에 7로 값을 바꾸면 최종적인 값은 3 -> 7로 변한다.

 

 

 

반면에 튜플은 값을 변경하려고 하면

_tuple = (73, "Sheldon Cooper")

_tuple[0] = 42

print(_tuple[0])

TypeError: 'tuple' object does not support item assignment

타입에러가 나게된다.

 

 

끝.

728x90
반응형