본문 바로가기
Python/Basic

[Python Basic]​파이썬의 기초, 자료형, List

by 하람 Haram 2022. 9. 23.
728x90

 

놀랍게도 파이썬도 객체지향 언어이다

 

프로그래밍에서 변수 = 값을 저장하는 장소 (변수 = 값 : 변수에 값을 넣어라)

변수는 메모리의 주소를 가지고 있음 (메모리에 들어가 있음) ex) 0x0006

변수에 들어가는 값은 메모리 주소에 할당된다

선언이 되는 순간 물리적인 공간이 할당된다

 

cpu (제어장치 + 산술논리 장치)

기본자료형

-정수형 integer 32bit -> 4byte
-실수형 float 64bit
-문자형 string
-논리형 boolean

=> 파이썬은 코드 실행시점에 데이터의 Type을 결정하는 "Dynamic Typing" 이다

"float 에서 주의점은 computer는 실수를 이진수로 저장하기에 무한소수가 된다"

(프로그래밍 할때 오차 발생의 가능성을 염두해야 한다)

 

LIST

list의 특징

1. indexing -> list에 있는 값들은 주소(offset)을 가짐

 

2. slicing -> list의 값들을 잘라서 쓴다 (범위 넘어갈 경우 자동으로 최대 범위를 지정)

[시작idx, 끝 idx, step]

ex) cities[0:5] -> cities의 번수 0~5, cities[::2] -> 2칸씩 슬라이싱, cities[::-1] -> 역으로 슬라이싱

​ex) cities[-3:] <-이건 뭐냐면 반대로 가는 거임 (끝이 -1 이니깐) -3, -2, -1 

 

 

3. 리스트 연산

(+ , *: concatenation)

 

 

4. 추가 & 삭제

 

리스트명.append("내용")  : 맨 뒤에 붙이는 거 

리스트명.extend(리스트) : concatenation 과 비슷한데 내부 연산이 다름 & 따로 결과 저장 필요 x (inline)

리스트명.remove(원소) : 원소를 삭제

del 리스트명[지울 idx] : 해당 idx의 원소를 삭제

 

ex) lst = [1,2,3]

lst.extend([a,b,c]) -> lst = [1,2,3,a,b,c]

 

5. 메모리 저장 방식

->파이썬은 다양한 데이터타입이 하나의 리스트에 들어 갈 수 있다

-> 기본적으로 주소를 가지고 논다. 

ex) a = [5,4,3,2,1]

b=a <- a와 b를 포인터라고 생각

a.sort() <- b도 변화한다

 

그러므로 이걸 따로 하고 싶으면 b= [5,4,3,2,1]이라고 재할당 해야한다

또는 b = a[:] 이런식으로 해야한다 (a=b는 포인터를 복사하는거야)

 

6. 패킹과 언패킹

ex) lst = [1,2,3]

a,b,c = lst  #언패킹

a -> 1 b-> 2 c -> 3

 

7. 이차원 리스트

[[1,2,3],[a,b,c],[10,20,30],['가','나','다']]

*주의점*

2차원 이상에서 부터는

copy_lst = my_lst[:]

이 방식으로 Deep-copy 할 수 없다

그러므로

import copy

copy_lst = copy.deepcopy(my_lst)

이런 식으로 진행해야 한다

 

하지만 위에 보단

lst = [[1,2],[3,4],[5,6]]
cpy_lst = [itm[:] for itm in lst ]

이걸 암기하기

 

 

sorted(리스트명)

->리스트를 오름차순으로 정렬을 된걸 'return'해준다

->parameter의 리스트에는 영향 x

리스트명.sort()

->리스트자체를 오름차순으로 정렬

-> return 값이 없다

728x90