List, Tuple, Dictionary, If, for, function,
Language/Python

List, Tuple, Dictionary, If, for, function,

뉴비뉴 2020. 5. 24.

리스트

리스트라는 것은 엘리먼트들을 모아놓은 목록입니다.

 

lst = [1,2,3,4]  # 정의

lst[-1]  # Negative Index 결과: 4

 

리스트의 더하기, 곱하기 연산은 String과 똑같이 사용됩니다.

 

range(x, y, z)

ex) range(1, 20, 3) 1, 4, 7 . . .

 

Append

lst.append('Hey')

클래스 인스턴스 안에 메소드를 호출할 때 .을 붙이게됩니다.

ex) [1,2,3,4,'Hey']

 

Del

del(lst[0])  # 0번 째 인덱스를 삭제합니다.

 

Reverse

lst.reverse()  # 인덱스를 거꾸로 뒤집어 저장합니다.

 

Remove

lst.remove(4)  # lst 안의 4라는 엘리먼트를 제거합니다.

 

파이썬의 List는 형을 지정해서 저장하는 것이 아닌 모든 데이터형을 저장할 수 있습니다.

 

튜플

리스트와 거의 동일합니다.

차이점이라면 변수의 내용을 변경할 수 없습니다.

 

정의

tul = (1,2,3)

tul[0] = 100 으로 변경하려고하면 에러가 발생합니다. 

*TypeError: 'tuple' object does not support item assignment

 

여러사람이 프로그래밍하다보면 상수라는 것을 정할 필요가 있습니다.

파이라는 것은 값이 변할 필요가 없습니다. 이와 같이 변경이 필요없는 값을 튜플로 지정하게 됩니다.

 

딕셔너리

리스트와 마찬가지로 collection variable type 입니다.

하지만 선형적이지 않은 collection 입니다.

Keys and values로 저장되게 됩니다.

 

dic = { 1: 'one', 2: 'two', 3: 'three' }

dic[1] 의 경우 인덱스가아니라 키 값을 의미합니다. 그럼 dic[1]은 key가 1인 values를 가져와라 라는 것으로 됩니다.

그래서 만약 존재하지 않은 키 값을 입력하게 되면 KeyError 가 발생하게 됩니다.

 

dic 가 인스턴스라고 가정을 하고, Dictionary Class 에서 나온 것 이다.

dic.keys() 를 하게 되면 keys 라는 메소드를 호출하게 됩니다.

keys()는 dic안에 존재하는 모든 key를 가져오게 됩니다.

values()는 당연히 valeus만 가져오게 되겠습니다.

items()는 keys, values

 

If

- A condition statement

- Python 에서는 Switch를 지원하지 않습니다.

 

for

- A loop statement

for variable in sequence:

sequence가 끝날 때 까지 variable로 가져오게 됩니다.

 

for 에 else로 넣어서 사용할 수 있습니다.

 

continue라는 것은 그 레벨에 있는 forloop로 다시 돌아가라는 뜻 입니다.

break라는 것은 break를 만나면 말 그대로 브레이크 forloop가 break 됩니다.

 

Function

def name(params):  # function 을 정의하겠다, params 함수에 입력이 되는 것 입력 값 (input parameter)
    statements
    return var1, var2  # 결과물을 return Python 에서는 결과에 대한 특성(Type)을 정해주지 않아도 된다.

 파이썬 함수의 특징

- You can return multiple variables ( Keep them in order)

- You do not have to specify return types

ㄴ 리턴 타입을 맞춰서 사용하지 않아도 됩니다.

ㄴ 다른 언어에서는 함수 정의할 때 데이터 타입을 지정하여 함수를 정의하게 됩니다.

ex) double func( ~~ ) Double 형 함수는 데이터를 입력을 Double로 받고 리턴도 Double로 한다는 것을 정의할 때 작성한다면 당장은 귀찮을 수 있지만 데이터에 어떤 값이 들어있고, 어떠한 결과를 리턴하는지 쉽게 알 수 있습니다. 추가로 입력할 때 Double형이 아니라면 함수를 실행할 수 없게 됩니다. 이점은 함수를 실행하기전에 입력 값이 Double형이 아니라면 오류를 발생하게 됩니다. 함수를 실행시키지 않는다는 것이죠.

하지만 Python의 경우 데이터형 선언이 없기 때문에 에러가 나중에 발생하게 됩니다.

 

lambda function

익명 함수로 메모리를 절약하는 이점이 있습니다.

또한 가독성을 향상시킨다라고 하지만 가독성이 좋은지는 잘 모르겠습니다.

lambda_add = lambda numParam1, numParam2 : numParam1 + numParam2
result = lambda_add(1, 2)
print(result)  # -> 3

map 함수

내장함수이며 입력받은 자료형의 각 요소가 함수에 의해 수행된 결과를 묶어서 map iterator 객체로 반환합니다.

map 함수는 게으른 연산을 진행해서 메모리를 크게 절약할 수 있습니다.

게으른 연산을 진행하기 때문에 값을 한번 사용하면 사용했던 값은 다시 호출할 수가 없습니다.

 

게으른 연산(lazy evaluation)

- 필요할 때만 가져다 사용하빈다. 보통 iterator 객체들이 게으른 함수 입니다.

 

iterator 객체

- next() 메소드로 데이터를 순차적으로 호출 가능

- 마지막 데이터 이후 next()를 호출하면 StopIteration 에러 발생

- for 문을 사용할 때 파이썬 내부에서는 임시로 listfmf iterator로 변환해서 사용

li = [1,2,3]
result = map(lambda i: i* i, li)

# result -> map type

next(result)
next(result)
next(result)
next(result)  # StopIteration 발생


 

 

 

 

댓글

💲 추천 글