python/자습

Unit 8 - 12(파이썬 코딩 도장)

지트리아 2022. 10. 29. 21:43

용어정리

요소 : 리스트에 저장된 각 값

 

 

본문정리

Unit 8.

isis not도 같다 다르다 기능을 하지만 이는 객체를 비교한다.( == !=는 값 자체를 비교한다) id()란 함수는 객체의 메모리 주소를 구하는데 이를 통해 객체를 확인할 수 있다.

and, or, not 연산자가 있다.(파이썬에서는 && || !이 없다.)

bool()를 사용하면 True False를 얻을 수 있다.(0과 0.0''과 ""를 제외하곤 True이다)

파이썬의 단락 평가에선 앞의 값이 확실하면 두번째 계산은 하지 않는 것을 의미한다(1or0이면 무조건 true)여기서

>>> True and 'Python'
'Python'

 True and 'Python' 을 입력하면 'Python'이 나온다. 왜냐하면 파이썬 논리 연산자는 마지막으로 단락 평가를 실시한 값을 그대로 반환하기 때문이다. 따라서 논리 연산자는 무조건 불을 반환하지 않는다.

Unit 9.

문자열을 변수에 입력할 때는 '', "", '''''', """"""를 이용한다 여기서 3개씩 입력하는 건 줄 바꿀때 적용하며 '과 "로 두가지 표현하는 이유는 ""안에는 '를 넣을 수 있고, ''안에는 "를 넣을 수 있다.

이 때, 3개씩 넣는 문자열에선 해당 문자를 적용할 수 있다("""  !@%*#@* "!@#$" """이 가능하다는 의미)반면 하나만 이용하는 문자열에선 적용이 불가능하다.

 

Unit 10.

리스트 = [값, 값, 값]으로 선언한다. 이때 값은 여러 자료형이 들어가도 된다. range(값)0부터 값-1까지 생성한다. 혹은 range(시작,끝)시작부터 끝-1까지 생성한다. 이를 응용하여 range(시작, 끝, 증가값)을 설정할 수 있다.(끝전까지 생성된다 생각하면 편하다!) 생성은 리스트 = list(range(‥))로도 가능하다. 요소가 없는 리스트는 리스트 = []로 선언하면 된다.

튜플 = (값,값,값) 혹은 튜플 = 값, 값, 값으로 선언한다. 안에 있는 요소를 변경·추가·삭제할 수 없다. 이때 값은 여러 자료형이 들어가도 된다. 요소 한개가 들어있는 튜플을 만들기 위해선 튜플 = (값, ) 혹은 튜플 = 값,으로 선언하면 된다. 생성은 튜플 = tuple(range(‥))로도 가능하다.

튜플과 리스트는 서로 생성이 가능하다. 방법은 a가 튜플일 시 list(a), a가 리스트일 시 tuple(a)이다. 해당 기능에 문자열을 넣으면 각 스펠링이 한 변수에 하나씩 들어간다.

변수의 개수와 리스트(튜플)의 요소 개수가 동일하다면 변수 여러개를 한 번에 만들 수 있다.

>>> a, b, c = [1, 2, 3]

>>> x = [1, 2, 3]
>>> a, b, c = x

이렇게 리스트와 튜플 요소를 변수 여러개에 할당하는 것을 리스트 언패킹, 튜플 언패킹이라 한다.

a = [1, 2, 3]    # 리스트 패킹
b = (1, 2, 3)    # 튜플 패킹
c = 1, 2, 3      # 튜플 패킹

이렇듯 변수에 리스트 또는 튜플을 할당하는 과정을 리스트 패킹, 튜플 패킹이라 한다.

Unit 11.

시퀀스 자료형이란 튜플, 리스트, range, 문자열처럼 값이 연속적으로 이어진 자료형을 의미한다. 이러한 시퀀스 자료형은 공통된 동작과 기능을 제공한다.

 

먼저 값 in (not) 시퀀스객체는 값이 해당 객체에 존재하는지 확인하는 방법이다.

 

시퀀스 객체는 +를 이용하여 객체를 연결하여 새 객체를 만들 수 있다. 다만 range()는 불가능하다.

이하는 예이다.

>>> list(range(0, 10)) + list(range(10, 20))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

다만 붙이는 형이 같아야한다. 만약 문자열 + 정수는 안되므로 문자열 + str(정수)로 바꿔야하며 list + tuple 또한 불가능하다.

 

시퀀스객체 * 정수 혹은 정수 * 시퀀스객체는 객체를 반복할 때 사용한다. 이때도 range()는 불가능하다. 이 때문에 range()를 다른 형태(list 혹은 tuple 등등)으로 바꾸고 적용한다. +도 마찬가지다.

 

len(시퀀스객체)는 요소의 개수를 구하는 함수이다. 이때는 range()를 사용가능하다.

 

이하는 음수 인덱스를 지정했을 때 나오는 모습이다. 

 

시퀀스 자료형 중 range, 튜플, 문자열은 읽기 전용이다.

 

del로 요소를 제거할 수 있다.

 

슬라이스는 시퀀스객체의 일부를 잘라내는 기능을 한다. 시퀀스객체[시작인덱스:끝인덱스:인덱스증가폭]을 이용하면 되는데 끝인덱스 - 1까지 나타낸다고 생각하면 쉽다. [‥‥‥‥]안의 내용을 바꾸며 이용가능하다.(증가폭을 음수로도 지정가능하다)

해당 기능을 이용하여 요소를 할당할 수 있다. 여기서 중요한건 자른 후 붙이는 것이다. 즉 인덱스의 숫자가 줄어들 수 도 있고 늘어날 수도 있다는 의미이다. 이하는 볼드체의 예시이다. 

>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[2:5] = ['a']    # 인덱스 2부터 4까지에 값 1개를 할당하여 요소의 개수가 줄어듦
>>> a
[0, 10, 'a', 50, 60, 70, 80, 90]
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[2:5] = ['a', 'b', 'c', 'd', 'e'] # 인덱스 2부터 4까지 값 5개를 할당하여 요소의 개수가 늘어남
>>> a
[0, 10, 'a', 'b', 'c', 'd', 'e', 50, 60, 70, 80, 90]

다만 인덱스 증가폭을 지정해 할당할 땐, 요소 개수가 정확히 일치해야한다.

또한 삭제를 할 수도 있다. del 시퀀스객체[시작인덱스:끝인덱스]로 표현하면 된다.

Unit 12.

딕셔너리는 키와 값을 묶는 것을 의미한다. 문법은 딕셔너리 = { 키1 : 값1, 키2 : 값2}이다. 만약 키값이 중복된다면 가장 뒤에 있는 값을 이용한다.

lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}

먼저 는 문자열 외에도 실수, 불등 자료형을 섞어 사용가능하다. 리스트와 딕셔너리는 사용불가하다.

은 리스트, 딕셔너리 등 모든 자료형을 사용가능하다.

빈 딕셔너리는 딕셔너리 = {} 혹은 dict()을 사용한다.

dict을 이용하여 선언하는 방식은 이하와 같다.

키가 없는 것에 값을 할당하면 추가된다.

 lux1 = dict(health=490, mana=334, melee=550, armor=18.72)

그 밖에도

dict(zip([키1,키2], [값1, 값2])), dict([(키1, 값1) , (키2, 값2)]) 방식이 있다.

 

딕셔너리의 키에 접근할 때는 딕셔너리의 뒤에 []를 이용한다.

lux = {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
>>> lux['health']
490

키 in 딕셔너리를 이용하여 키가 있는지 확인할 수 있다.(not in 가능)

len(딕셔너리)를 통해 키의 개수를 구할 수 있다.

 

 

본문제