파이썬(Python) 자료구조 (list, dictionary, set, tuple)

list

리스트를 사용해서 숫자, 문자, 수식 등 여러가지 자료들을 묶어둘 수 있다.

선언한 리스트를 출력하면 내부의 자료를 모두 출력하게 된다.

list 선언

자료들을 대괄호로 묶어서 생성한다.

list_test = [1, 2, 3, 4, 5, “문자열”, True, False]

인덱스요소로 불러오기 때문에 자료를 카운트할때는 1이 아닌 0부터 센다.

예를 들어 위의 리스트에서 [0]은 1, [1]은 2가 되는 것이다.

리스트에 요소 추가/제거

요소 추가

-append : 리스트 뒤에 요소를 추가한다.

리스트명.append(요소)

-insert: 위치를 지정해서 리스트의 중간이나 앞에도 요소를 추가할 수 있다.

리스트명.insert(위치, 요소)

-extend: 한번에 여려 요소를 추가할 수 있다.

리스트명.extend([요소, 요소, 요소])

리스트명과 리스트명 사이에 연산자를 넣어서 리스트끼리 합하거나 반복하거나 할 수 있다.

요소 제거

@인덱스로 제거 del, pop

-del: 리스트의 특정 인덱스에 있는 요쇼를 제거한다.

del 리스트명[인덱스]

-pop: 변수를 입력하지 않으면 마지막 요소를 제거한다.

리스트명.pop(인덱스)

@값으로 제거

remove: 인덱스로 제거하는 것이 아닌 리스트 내부에 있는 값을 지정해서 제거한다.

리스트.remove(값)

List = [1, 2, 3, 4, 2]
list.remove(2)

>>

list
[1, 3, 4, 2]

리스트 내부의 2라는 값중 가장 앞에 있는 한가지만 제거하게 된다.
리스트에 중복된 여러 값을 모두 제거하려면 반복문과 조합해서 사용하면 된다.

@모두 제거하기

clear: 리스트 내부의 모든 요소를 제거한다.

리스트명.clear()

dictionary

키를 기반으로 값을 저장하는 자료형이다. (list는 인덱스를 기반으로 값을 저장함)

dictionary 선언

딕셔너리는 중괄호로 선언하고 키:값 형태를 쉼표로 연결해서 사용한다.

키는 문자열, 숫자, 불 등으로 선언할 수 있지만 일반적으로는 문자열을 사용한다.

변수 = {
키: 값,
키: 값,
키: 값
}

ex)

movie = {
	“name” = “avengers”,
	“type” = “here movie”
	}

딕셔너리의 키에 단순한 식별자를 입력하면 파이썬은 이를 변수로 인식하기때문에 NameError오류가 발생한다. 그렇기 때문에 딕셔너리를 선언할 때 키를 문자열로 사용할 때에는 반드시 따옴표를 붙여준다.

또한 딕셔너리는 중괄호를 써서 선언하지만 그 요소에 접근할때는 리스트처럼 대괄호를 사용한다.

dictionary = {}
dictionary[“name”]
dictionary{“name”} <——— X

딕셔너리에 값 추가/제거

요소 추가

딕셔너리[새로운 키] = 새로운 값

movie["dircetor"] = "Joss Whedon"

>>

movie = {
	“name” = “avengers”,
	“type” = “here movie”,
 	"dircetor" = "Joss Whedon"
	}

요소 제거

del 키워드 사용 del dictionary[“키”]

del movie["type"]

>>

movie = {
	“name” = “avengers”,
	"dircetor" = "Joss Whedon"
	}

set

set은 list와 마찬가지로 다양한 타입의 요소들을 저장할 수 있다.

하지만 set은 리스트와 다르게 요소들이 순서대로 저장되지 않는다. 그렇기 때문에 for문으로 읽어들이면 요소들이 무작위 순서로 나오게 된다.

순서가 없으므로 indexing을 활용해 몇번째 요소를 읽어들이거나 할 수도 없고 중복된 값을 저장할 수도 없다.

set 선언

중괄호를 사용하거나 set()함수를 사용한다.

set1 = {1, 2, 3}
set2 = set([1, 2, 3])

일반적으로 set()함수를 사용해서 set을 만드는 경우는 list를 set으로 변환하고 싶을때 사용한다.

set1 = {1, 2, 3, 1}
print(set1)

>> {1, 2, 3}

중복된 값은 저장이 안되기에 위와 같이 동일한 값이 여러개가 있다면 맨 나중에 저장되는 요소만 남게 된다.

set에 요소 추가/제거

요소 추가

set은 요소들이 순차적으로 저장되지 않기 때문에 list에서 사용하는 append가 아닌 add()라는 함수를 사용해서 요소를 추가한다.

set1 = {1, 2, 3}
set.add(4)
print(set1)

>> {1, 2, 3, 4}

요소 제거

set에서 요소를 제거할때는 remove 함수를 사용한다.

set1 = {1, 2, 3, 4}
set.remove(3)
print(set1)

>> {1, 2, 4}

교집합 & 합집합

set은 교집합과 합집합을 구할때도 사용할 수 있다.

교집합

& 키워드 혹은 intersection()함수를 사용한다.

set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}

print(set1 & set2)

>> {4, 5, 6}

합집합

| 키워드 혹은 union 함수를 사용한다.

set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}

print(set1 | set2)

>> {1, 2, 3, 4, 5, 6, 7, 8, 9}

print(set1.union(set2))

>> {1, 2, 3, 4, 5, 6, 7, 8, 9}

tuple

튜플(tuple)은 함수와 함께 많이 사용되는 list와 비슷하다고 볼 수 있지만 list와의 차이점은 한번 결정된 요소는 바꿀 수 없다는 것이다.

tuple 생성법

이름 = (data, data, data, ….)

요소 하나만 가지는 튜플을 선언하기 위해서는 쉼표와 요소 뒤에 쉼표를 붙인다
ex. 이름 = (data,)

tuple_test = (10, 20, 30)

tuple_test[0]
10

tuple_test[1]
20

이렇게 놓고보면 튜플과 리스트의 차이는 없어보인다. 하지만 튜플은 리스트와 다르게 내부 요소 변경이 불가능하다.

tuple_test = (10, 20, 30)

tuple_test[0] = 1

TypeError: 'tuple' object does not support item assignment

위와 같이 튜플의 0번째에 1을 넣으려고 하면 에러가 발생하게 되는데 이는 튜플의 내부 요소 변경이 불가능하기 때문이다.

튜플은 언제 유용하게 사용하는가?

함수의 리턴에 튜플을 사용하면 여러개의 값을 리턴하기 편해지기 때문에 함수의 리턴에 많이 사용한다.

또한 괄호를 생략해서 다양하게 사용도 가능하다.

set과 dictionary의 차이점

set은 key값만 가지고 있으며 dictionary는 key값과 value값을 가지고 있다.

list와 tuple의 차이점

list는 대괄호 []를 이용해 선언하고 tuple은 괄호()를 이용해 선언한다.

list는 요소의 수정이 가능하지만 tuple은 내부 요소의 변경이 불가능하다.

한장 정리

*출처: https://youn-ha.github.io/jekyll/2019/04/19/190419.html

*참고자료: 혼자 공부하는 파이썬 (윤인성)

좋은 웹페이지 즐겨찾기