[Python] list, tuple, set, dict

김예진·2020년 8월 27일
0

Python

목록 보기
3/14
post-thumbnail

1. 리스트(list)

  • 여러개의 자료를 하나의 변수로 관리할 때 사용.
  • 데이터를 순차적으로 저장하는 열거형 집합.
  • 수정, 삭제, 추가 ⭕️

1) 리스트 만들기

  • 리스트는 [ ] 대괄호를 사용해서 만들며 내부 원소들은 , 콤마로 구분한다.
  • 빈 리스트를 만들 수 있다.
  • 리스트 함수를 이용해서 만들 수도 있다

ex)

✏️ li라는 변수 이름을 가진 빈 리스트 만들기

>>> li = []

✏️ li라는 변수 이름을 가진 빈 리스트 함수를 이용해서 만들기

>>> li = list()

✏️ candy 라는 변수 이름을 가진 리스트 만들기

>>> candy = ['사과맛', '토마토맛', '딸기맛', '수박맛', '오렌지맛']

2) 리스트 인덱스(index)

  • 리스트는 인덱스를 이용해 특정 위치의 값을 출력할 수 있다.
  • 파이썬에서 리스트 인덱싱은 음수도 허용한다. 인덱스가 음수일 경우 역순으로 인덱싱 된다.

ex)

>>> candy = ['사과맛', '토마토맛', '딸기맛', '수박맛', '오렌지맛']

>>> candy[0]
'사과맛' 

>>> candy[1]
'토마토맛'

>>> candy[2]
'딸기맛'

>>> candy[-1]
'오렌지맛'

>>> candy[-2]
'수박맛'

3) 리스트의 method

  • 문자에 관련된 method(?)
method설명
변수.index(값)값 위치찾기

ex)

>>> candy = ['사과맛', '토마토맛', '딸기맛', '수박맛', '오렌지맛']

>>> candy.index('사과맛')
0

>>> candy.index('수박맛')
3

method설명
변수.append(값)값 추가하기 : 리스트 맨 끝에 추가
변수.insert(특정위치,값)값 추가하기 : 원하는 특정 위치에 추가
변수.remove(값)값 삭제하기
del 변수[인덱스번호]인덱스 번호로 삭제하기
값 in 변수특정 값 확인하기
len(변수)값의 전체 개수 : 리스트가 반복문(특히 for문)에 들어갔을 때 자주 사용되는 함수
변수.count(값)특정 값의 개수 세기

  • 숫자에 관련된 method
method설명
sum(변수)합 구하기
min(변수)최소값
max(변수)최대값
변수.reverse()역순 만들기 : 리스트 순서에서 반대로
변수.sort()오름차순 정렬 : 숫자 작은 것부터 큰 것 순서
변수.sort(reverse=True)오름차순 정렬 : 숫자 큰 것부터 작은 것 순서

4) 리스트(list)의 데이터 유형 변경

  • list를 tuple로 변경
>>> li = ['a', 'b', 'c', 'd', 'e']
>>> tuple(li)  #
('a', 'b', 'c', 'd', 'e')

>>> type(li) #li변수의 데이터 형식 확인하는 코드
<class 'list'> #list로 출력된 것을 다시 확인할 수 있음

  • list를 dict 로 변경
>>> dict(리스트 변수이름)  #이때 키:값이 맞을 수 있게 짝이 맞아야함

ex)

>>> li=['ab','cd','ef']
>>> dict(li) 
{'a': 'b', 'c': 'd', 'e': 'f'} 👉🏻 짝이 맞았기 때문에 dict으로 변경됨

>>> li=['ab','cdd','ef']
>>> dict(li) 
Traceback (most recent call last)
  File "<pyshell#96>", line 1, in <module>
    dict(li)
ValueError: dictionary update sequence element #1 has length 3; 2 is required 

👉🏻 짝이 안맞았기 때문에 에러발생

2. 튜플(tuple)

  • 처음 저장한 값을 변경할 수 없는 열거형 집합
  • 추가, 삭제, 변경 ❌

1) 튜플 만들기

  • 튜플은 ( ) 소괄호를 이용하여 만들 수 있고 내부 원소는 , 콤마를 사용하여 구분한다.
  • 소괄호 없이도 생성 가능(콤마로 구분)
  • 빈 튜플을 만들 수 있다.

ex)

✏️ tu라는 변수 이름을 가진 빈 튜플 만들기

tu = ()

✏️ 소괄호 없이 튜플 만들기

>>> nothing = 'a',  10, 12.5, '다람쥐'
>>> type(nothing)
class<'tuple'>

✏️ 값이 1개인 튜플 만들기 👉🏻 반드시 뒤에 콤마를 붙여주기❗️

>>> my_int = (1)
>>> type(my_int)
class<'int'> 👉🏻 튜플이 아닌 int(정수형)으로 인식됨


>>> my_tuple = (1,)
>>> type(my_tuple)
class<'tuple'> 👉🏻 튜플로 인식됨

✏️ tu라는 변수 이름을 가진 빈 튜플 함수를 이용해서 만들기

tu = tuple()

✏️ book 이라는 변수 이름을 가진 튜플 만들기

book = ('동화책', '소설책', '만화책', '잡지책')

2) 튜플 인덱스(index)

  • 리스트와 마찬가지로 인덱스를 가지므로 특정 위치의 값을 출력할 수 있다.
    ex)
book = ('동화책', '소설책', '만화책', '잡지책')

>>> book[0]
'동화책' 

>>> book[1]
'소설책'

>>> book[-1]
'잡지책'
  • 리스트와 다르게 튜플은 값을 수정할 수 없다.👉🏻 오류발생❗️
    ex)
book = ('동화책', '소설책', '만화책', '잡지책')

#인덱스0번인 동화책을 요리책으로 수정하려는 코드 입력
>>> book[0] = '요리책'

Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    book[0]='요리책'
TypeError: 'tuple' object does not support item assignment

3) 튜플의 method

튜플은 데이터를 추가,변경할 수 없기 때문에 .append() 등 값을 변경하는 메소드는 사용 ❌
값을 조회하는 .count(), .index() 등의 메소드 사용 ⭕️

  • 리스트와 동일한 method
method설명
변수.index위치찾기
값 in 변수확인하기
len(변수)전체개수
변수.count(값)개수세기 : 특정 값의 개수세기

  • 튜플만의 method

(1) 변수 할당하기 : 앞쪽에 있는 변수 개수와 튜플 안에 있는 변수의 개수가 똑같아야한다.

ex 1)

>>> num = (5,7,9)
>>> n1,n2,n3 = num
>>> n1
5
>>> n2
7
>>> n3
9

ex 2) 튜플 속에 튜플을 이용해 할당하기

>>> (a, (b, c, d)) = (2,(7, 9 ,10))
>>> a
2
>>> b
7
>>> c
9
>>> d
10

(2) 값 교환하기 : 임시변수를 만들어서 값을 교환해야함

ex 1) 첫번째 방법

>>> a = 'hello'
>>> b = 'world'
>>> c = a  #임시변수 c를 생성해서 c에 a값 넣음
>>> a = b
>>> b = c
>>> a
'world' #a에는 'world'가 출력됨
>>> b
'hello' #b에는 'hello'가 출력됨

ex 2) 두번째 방법 (첫번째 방법을 간단화)

>>> a = 'hello'
>>> b = 'world'
>>> (a,b) = (b,a)
>>> a
'world' #a에는 'world'가 출력됨
>>> b
'hello' #b에는 'hello'가 출력됨

4) 튜플(tuple)을 데이터 유형 변경(list로)

>>> tu = ('a', 'b', 'c')
>>> list(tu)  #튜플을 리스트로 변경하는 코드
['a', 'b', 'c']

>>> type(tu)  #li변수의 데이터 형식 확인하는 코드
<class 'tuple'> #tuple로 출력됨! list로 변경한 값을 변수에 넣어주어야함!

>>> li = list(tu) #list로 변경한 값을 li라는 변수에 입력
>>> type(li)
<class 'list'> #list로 출력됨

3. 세트(set)

  • 순서가 없고 중복이 허용되지 않는 집합.
  • 변경 ❌ , 추가 ⭕️

1) 세트 만들기

  • 세트는 { } 중괄호를 이용하여 만들 수 있고 내부 원소는 , 콤마를 사용하여 구분한다.
  • 세트 함수를 사용해서 만들 수 있다.
  • 빈 괄호로 빈 세트를 만들 수 ❌ 👉🏻 딕셔너리로 인식된다!

ex)

✏️ se라는 변수 이름을 가진 세트 함수를 이용해서 세트 만들기

>>> se1=set()
>>> type(se1)
<class 'set'> 👉🏻 세트로 인식됨
>>> se2={}
>>> type(se2)
<class 'dict'> 👉🏻 딕셔너리로 인식됨

2) 세트의 특징

  • 세트는 순서가 없으므로 인덱스 ❌ - 에러 발생
>>> a = {2,4,6,8}
>>> a[0]
Traceback (most recent call last):
  File "<pyshell#49>", line 1, in <module>
    a[0]
TypeError: 'set' object is not subscriptable
  • 세트는 순서가 없음
>>> a = {2,4,6,8}
>>> a
{4,2,8,6} 👉🏻 내가 입력한 순서와 똑같이 출력되지 않음
  • 세트는 중복이 안됨
>>> b = {2,4,2,1,2,3}
>>> b
{1,2,3,4} 👉🏻 중복된 값은 사라짐

3) 세트의 method

  • 리스트와 튜플에서 사용했던 메소드 중에서 순서와 관련없는 메소드는 사용 가능
method설명
변수.add(값)추가하기
변수.remove(값)삭제하기
값 in 변수확인하기
len(변수)전체개수
sum(변수)합 구하기
min(변수)최소값
max(변수)최대값

  • 세트만 가지고 있는 메소드
    ex)
a = {1,2,3}   b = {2,3,4}
method설명예시 결과값
a&b교집합 : 중복된 값{2,3}
a-b차집합 : 중복된 값만 빼기{1}
b-a차집합 : 중복된 값만 빼기{4}
a^b대칭 차집합 : (a-b) + (b-a)의 값{1,4}

+) a|b 합집합! = {1,2,3,4}



4) 세트(set)를 데이터 유형 변경(list와 tuple로)

  • set 를 list 로 변경
>>> list(세트변수이름)
  • set를 tuple로 변경
>>> tuple(세트변수이름)


4. 딕셔너리(dict)

  • 순서(index, 색인)가 아닌 키와 값이 쌍으로 구성된 집합.
  • dic = {키:값, 키:값, 키:값}

1) 딕셔너리 만들기

  • 중괄호 { }를 사용해서 만들 수 있고 키:값을 넣고 , 콤마로 구분한다.
  • 딕셔너리 함수를 사용해서 만들 수 있다.
  • 빈괄호 { }로 빈 함수를 만들 수 있다.

ex)

✏️ dic이라는 변수 이름을 가진 빈 딕셔너리 만들기

>>> dic = {}
>>> type(dic)
class<'dict'>

✏️ dic라는 변수 이름을 가진 빈 딕셔너리 함수를 이용해서 만들기

>>> dic = dict()

✏️ 사전이라는 변수 이름을 가진 딕셔너리 만들기

>>> 사전 = {'코드':'프로그래밍 언어', '연필':'글 쓸 때사각사각 소리나는 것', '지우개':'연필로 쓴 거 지우는 것'}

2) 딕셔너리의 특징

  • 인덱스 ❌
  • 대신 '키'를 사용하여 값을 출력할 수 있다.
  • 딕셔너리의 키 위치에는 값을 바꿀 수 없는 자료형(문자열, 숫자, 튜플 등)만 사용.
  • 값은 상관 없음
  • 추가, 삭제, 수정 ⭕️

ex)

>>> 사전 = {
'코드':'프로그래밍 언어', 
'연필':'글 쓸 때 사각사각 소리나는 것', 
'지우개':'연필로 쓴 거 지우는 것'
}
>>> 사전['코드'] 👉🏻 인덱스번호 대신 키를 사용하여 값 출력
'프로그래밍 언어'

>>> 사전['연필'] 👉🏻 인덱스번호 대신 키를 사용하여 값 출력
'글 쓸 때 사각사각 소리나는 것'

✏️ 딕셔너리에 새로운 '키:값' 추가하기

딕셔너리[추가할 키 이름] = 추가할 값

추가할 키가 이미 딕셔너리에 있는 이름이면 수정이되고, 없는 이름이면 추가가 됨!

>>> 사전 = {
'코드':'프로그래밍 언어',
'연필':'글 쓸 때사각사각 소리나는 것',
'지우개':'연필로 쓴 거 지우는 것'
}
>>> 사전['볼펜'] = '지우개로 안지워지는 것'
>>> 사전

{
'코드': '프로그래밍 언어', 
'연필': '글 쓸 때사각사각 소리나는 것', 
'지우개': '연필로 쓴 거 지우는 것', 
'볼펜': '지우개로 안 지워지는 것'
}

3)딕셔너리의 method

  • 기존에 인덱스가 기준이었던 메소드를 키를 기준으로 사용
method설명
del 딕셔너리 이름[키]삭제하기
변수.clear()전체삭제
키 in 변수확인하기(키 기준)
len(변수)전체 개수 : 쌍으로 계산됨

  • 딕셔너리에 있는 키와 값들을 출력하는 메소드
method설명
변수.keys()모든 키 얻기
변수.values()모든 값 얻기
변수.items()모든 순서쌍 얻기

딕셔너리의 키나 값을 리스트나 튜플로 출력하고 싶을 때

>>> list(변수.keys 혹은 values ())
>>> tuple(변수.keys 혹은 values ())

ex)

>>> family={'아빠':50,'엄마':48, '나':20}

>>> list(family.keys()) 👉🏻 [리스트]로 출력된 딕셔너리의 키
['아빠', '엄마', '나']

>>> list(family.values()) 👉🏻 [리스트]로 출력된 딕셔너리의 값
[50, 48, 20]

>>> tuple(family.keys()) 
('아빠', '엄마', '나') 👉🏻 (튜플)로 출력된 딕셔너리의 키

>>> tuple(family.values()) 
(50, 48, 20)👉🏻 (튜플)로 출력된 딕셔너리의 값

모든 순서쌍을 얻는 변수.items() 를 사용할 때 주의해야할 점 ❗️

❗️ 리스트로 출력할 때 👉🏻 맨 바깥은 [리스트]로, 키:값이 묶인 쌍은(튜플)로 묶여서 출력됨 !

>>> list(family.items())
[('아빠', 50), ('엄마', 48), ('나', 20)] 

❗️ 튜플로 출력할 때 👉🏻 바깥쪽과 안쪽 모두 (튜플)로 출력!

>>> tuple(family.items())
(('아빠', 50), ('엄마', 48), ('나', 20)) 

4) 딕셔너리(dict)의 데이터 유형 변경

: 딕셔너리를 통으로 변경할 경우 키만 출력된다.

  • list 로 변경
>>> list(딕셔너리변수이름)
[키만 출력됨]
  • tuple로 변경
>>> tuple(딕셔너리변수이름)
(키만 출력됨)
  • set로 변경
>>> set(딕셔너리변수이름)
{키만 출력됨}
profile
Backend Developer 🌱 벨로그 내용을 티스토리로 이사중~!

0개의 댓글