본문 바로가기
컴퓨터/Python

[Python] 기초 문법 -2 list,dictionaries,sets and tuples

by IT황구 2021. 1. 12.
728x90
반응형

Container

파이썬에 존재하는 내장된 container type 은 List, DIctionary, Set, Tuple이 있다.

https://docs.python.org/3.5/tutorial/datastructures.html#more-on-lists

 

 

List

( 위의 링크를 보면 리스트로 스택, 큐 둘다 사용 가능.)



파이썬에서의 List는 Array와 같지만 Linked-list처럼 resizable 하다.

거기에다가 다른 종류의 element를 넣을 수 있다고 한다.

index에 -가 있다. 하.. 무근본언어 인가;;

arr[n]이면

arr[-n)]이 가능하다. -1을 하면 맨 뒤의 index를 가져온다.

revese 를 통해서 list 내용 뒤집기, count를 통해서 list 내 같은 element의 개수 sort pop 등 여러가지 메소드가 많으니 저길 참고하면 된다.

list를 그대로 출력하면 '[' 까지 그대로 나오는것이 신기하다.

다른 타입을 저장 할 수 있는것도 신기하다.



List slicing

리스트의 원소 a부터 b-1 까지 접근하게 해주는 문법 [a:b]

slicing : list의 원소 하나에도 접근 할 수 있지만 원소의 특정 원소부터 원소까지 접근할 수 있게 해주는 문법.

비어있는 list를 a = list() 처럼 생성할 수 있다.

a = [3,5,6,7] 처럼 직접 지정할 수도 있지만, a = list()를 이용해서 비어있는 리스트를 생성할 수 있다.

추후 numpy에서 다시 다루게 될 것이라고 되어있다.

List loop

https://docs.python.org/3.5/library/functions.html#enumerate

 

 

enumerate가 설명에 등장하는데 여길 참고하면 된다.

list 를 쭉 읽으면서 index랑 value를 같이 반환해준다.

이렇게 C의 느낌으로 print로 찍을수도 있고, list에 pair처럼 출력할수도 있다.

List Comprehension (LC)

좀 더 쉽게 list를 만드는 방법

--자꾸 for문을 쓰고나서 ' : ' 을 안쓴다. 버릇을 들여야한다.

빈 배열을 만들고 append를 통해서 제곱한 값을 계속 더해나가는 코드이다.

이걸 한줄로 표현 가능하다.

문법은 [ expression for 'index name' in 'array name' ] 으로 표현하면 된다.

저렇게 append 대신에 [ i ** 2 for i in ex] 로 한번에 표현했다.


Dictionary

(key, value)를 pair로 저장하는것, Java의 Map과 유사.

list 처럼 [] 대괄호가 아닌 {} 중괄호를 사용한다!!

key값으로 접근할땐 [] 다시 대괄호를 사용한다.

get 함수로 받아올 수 있다. 없으면 없다는 말을 출력할수도 있다.

내 생각엔 get을 쓰는게 좀 더 안전해 보인다.

이런식으로 for문으로도 사용할 수 있다.

items() method를 이용해서 key 와 value 동시에 접근 가능하다.

 

for names,types로 하면 name에 key값이 들어가버리니 주의해야한다.


Dictionary Comprehension (DC)

좀 더 쉽게 Dictionary를 만드는 방법

List Comprehension과 다른점은 {} 중괄호를 쓴다는점과 key : value 의 형태라서 : 가 들어간다는 점이다.


Set

Unordered , Mutable

순서가 없으며 각 원소는 unique하다.

Dictionary처럼 중괄호를 사용하지만 key는 따로 없다. value만 존재.

get으로 보려고 하니까 get함수가 없다고 나온다.

array.add("value")를 통해서 추가하고, array.remove("value")를 통해서 삭제한다.


Set Comprehension (SC)

좀 더 쉽게 Set을 만드는 방법

0~29 까지 루트를 씌우면 중복값을 제거하고 int로 형변환을 했을때 0~5까지 나오게 된다.

Dictionary와 문법은 똑같은 수준이다. key값이 없어서 : 만 없을뿐..


Tuple

list와 비슷하지만 다른..

A tuple is an (immutable) ordered list of values.

위의 내용은 튜플의 정이이다.

순서가 있는(변하지않는) 값들의 리스트이다.

일단 변하지 않는다는 것부터 list와 다르고, dictionary의 key값이나 set의 elements로 쓰일 수 있다.

아래 예시를 보자.

0~9까지 자동으로 생성된 숫자에서

{ (0,1) : 0, (1,2) : 1, ~~ }

이런 dictionary를 생성하는 코드이다. DC를 이용해서 생성했다.

저렇게 key값으로 이용할 때 사용이 가능하다.

key값이 변하지 않고, ordered 이다.

ordered에 변하지 않으므로 key값으로 쓰일 수 있다 로 이해하는게 좋겠다.

==============

하다가 말도안되는 오류가 날때가 있다.

ex)

a = 3

print(type(a))

이게 에러로 나오는 경우가 있는데.. 그럴땐 kernel을 restart 하면 해결이 된다.

이유도 모르고 계속 틀려서 화만 났었는데 .. 다행이다

===END

 

blog.naver.com/rbals0445/222203709435

 

[Python] 기초 문법 -2 list,dictionaries,sets and tuples

Container파이썬에 존재하는 내장된 container type 은 List, DIctionary, Set, Tuple이 있다.​http...

blog.naver.com

이곳을 들어가면 좀더 깔끔한 정리를 볼 수 있다.

728x90
반응형