본문 바로가기
관리자

Programming-[Backend]/Python

파이썬 기본 - 2. 리스트, 튜플, 딕셔너리, 집합, 불, 인스턴스 복사

728x90
반응형

 

1. 리스트

 

리스트 지정 및 조회

리스트는 여러 개의 값을 한 번에 관리하기 위해서 사용한다. 대괄호 [...]의 형태로 사용한다.

리스트 안에 리스트를 넣을 수도 있으며, 문자열에서처럼 index를 통해 원소를 조회할 수 있다.

slicing, 덧셈, 곱셈도 문자열과 같은 문법으로 사용 가능하다.

 

리스트 변형

 

원소의 교체, 삭제

정렬

sort, reverse 함수가 있다. reverse는 내림차순으로 정렬하는 것이 아니라 원래 상태에서 순서를 뒤바꾸는 것을 의미한다.

추가, 삽입, 제거

append, insert, remove 함수를 사용한다. append는 맨 뒤에 추가, insert는 특정 index에 추가한다. remove는 특정 원소를 찾아서 제거하며, 맨 처음 조회된 원소만 제거한다.

 

pop, count, extend

pop 함수는 맨 마지막 요소를 제거하면서 조회한다. count 함수는 리스트 내의 원소 개수를 반환하며, extend는 리스트에 다른 리스트를 붙일 수 있다.


 

2. 튜플(Tuple)

튜플은 리스트와 마찬가지로 원소의 집합이다. 그러나 튜플은 원소를 추가하거나 변경할 수 없다. 길이와 값이 고정되어 있다. 소괄호로 표시한다.

 

다만 덧셈, 곱셈과 같이 기존 튜플을 변화시키지 않는 것은 가능하다.

 

튜플을 이용해서 여러 변수들의 할당을 한꺼번에 할 수도 있다. list도 똑같은 문법의 사용이 가능하다.

(a, b) = (1, 2)
print(a) #1
print(b) #2

 

switching 도 간편하게 할 수 있다. 괄호는 생략해도 된다.

a = 3
b = 5
a, b = b,a
print(a) #5
print(b) #3

 

3. 딕셔너리(Dictionary)

 

딕셔너리는 자바에서의 Map이나 rest api에서의 json과 유사한 자료형이다. 중괄호 {...}로 사용한다.

 

get()

만약 없는 key값을 통해서 조회하는 경우에는 get() 함수를 쓰는 것이 error-safe하다. get() 함수를 적용했는데 결과가 없는 경우 None이 출력된다. get 함수의 두번째 인자값을 주어 없는 key값을 조회했을 때 특정한 값이 출력되도록 할수도 있다.

in

in을 통해서도 조회가 가능하다. key값이 있으면 True, 없으면 False를 반환한다.

 

 

key 중복 금지

value를 조회할 때 key값을 기준으로 하므로, key가 중복되면 안된다. 중복된 key가 있는 경우 마지막 값만 남는다.

 

keys(), values(), items() 함수를 통해서 각각 key, value, key-value를 리스트로 뽑아낼 수 있다.

 

 

 

추가 및 삭제

리스트와 유사하다. 다만 key-value로 이루어져있고 key를 통해서 요소를 찾는다.

clear() 함수를 사용하면 딕셔너리를 비울 수 있다.

 


4. 집합(Set)

 

집합은 자바에서의 Set과 유사하다. 특징은 다음과 같다.

 

  • 중복을 허용하지 않는다.
  • 순서가 없다.

Set은 set() 함수를 쓰거나 중괄호{...}를 이용하여 정의할 수 있다.

Set 기능 1. 중복 제거

집합은 중복을 검사하거나 제거할 때 사용할 수 있다.

 

set 기능 2. 집합 연산 처리

다른 언어들에 비해 편리하게 활용할 수 있는 기능이다. 예를 들어 자바에서는 아래 교집합 기능을 구현하기 위해서 이중 포문을 사용했던 것 같다.

 

교집합

교집합은 intersection이나 &로 할 수 있다.

 

합집합

합집합은 union이나 |로 할 수 있다. 다만 집합 자료형이므로 중복된 원소는 중복이 제거된다.

차집합

차집합은 difference나 -로 할 수 있다.

 

 

값 추가, 제거

값의 추가는 add(), 여러 값을 한번에 추가하는 것은 update() 함수를 사용한다. set이므로 중복된 값을 추가할 수는 없다.

 

제거는 remove() 함수를 사용한다.

 

 


5. 불(Boolean)

 

불 자료형은 참과 거짓을 나타낸다. 주의할 점은 True, False 모두 맨 앞 글자는 반드시 대문자로 써야한다. type을 조회하면 'bool'로 출력된다.

 

파이썬에서 각 자료형은 Bool 값을 갖는다. 뭔가 값이 있으면 True, 없으면 False라고 생각하면 된다.

참 거짓 여부
"hi" True
"" False
[1,2,3] True
[] False
() False
{} False
1 True
0 False
None False

 

예제)

a= [1,2,3,4]
while a:
    a.pop()
    print(a)

 


 

6. 인스턴스 복사

 

다른 언어에서도 마찬가지지만, 변수를 선언하면 그 메모리 주소가 선언된 값과 연결된다.  id() 메서드를 사용하여 메모리에 부여된 id값을 조회할 수 있다.

 

a= [1,2,3,4]
print(id(a)) #3003985466816

 

a= [1,2,3,4]
b = a
a[0] = 5
print(b, id(a), id(b))  # [5, 2, 3, 4] 2154016052800 2154016052800

 

그래서, 리스트 인스턴스를 복사하기 위해서는 slicing 문법을 적용하면 된다.

a= [1,2,3,4]
b = a[:]
a[0] = 5
print(a, b, id(a), id(b)) #[5, 2, 3, 4] [1, 2, 3, 4] 1363353310720 1363350013120

 

또는 copy 라이브러리를 import 하면 된다.

from copy import copy

a= [1,2,3,4]
b = copy(a)
a[0] = 5
print(a, b, id(a), id(b)) #[5, 2, 3, 4] [1, 2, 3, 4] 1903307493760 1903300077248

 

*파이썬 튜터 사이트

https://pythontutor.com/visualize.html#mode=edit

 

생성되는 자료구조를 시각적으로 보여준다.

 

 


참조

 

1. 유튜브 조코딩 채널 - 최신 파이썬 코딩 무료 강의

https://www.youtube.com/watch?v=KL1MIuBfWe0

 

 

728x90
반응형