[파이썬] 디테일

serotonins·2022년 10월 30일
0

Develop

목록 보기
6/17

1. sort, sorted

list_name.sort(reverse=True)
sorted(list_name, reverse=True)

둘 다 내림차순 정렬 가능
근데

  • 정렬할거.sort()는 이 리스트를 정렬하고 조용히 빠지는 애다 = 반환을 안 한다 = for s in list_name.sort(): 처럼 쓰면 오류 난다는 얘기다
    속도는 sorted보다 더 빠름
  • sorted(정렬할거)는 new_list = sorted( ) 로 써야한다 = 반환을 하는 애다 = 변수에 대입을 안 해주면 해당 리스트는 정렬이 안 되어있다
    tuple, str도 가능(dict는 순서가 없는 애라 정렬 자체가 불가)

같은 맥락으로
정렬할거.reverse(), reversed(정렬할거)
도 이해하면 된다

근데 reversed는 tuple, str인 경우엔 reversed 객체를 반환하니

# 문자열str은 
new_str = list(reversed(정렬할거))
new_str = ''.join(new_str)

이런 단계를 거쳐야한다.

그리고 다차원일 때 정렬하면 첫번째 원소 기준으로 정렬된다.

2. dictionary

dictionary에 키가 똑같은데 value는 다른 게 여러 개 있으면 다 찾아주지 않는다(확실) 맨 마지막 키의 밸류를 반환하는 거 같다(추측)

key랑 value 위치 바꾸기

a = {'a': 65, 'b': 66}
b = {v: k for k, v in a.items()}

3. 오류 메세지

mutable 수정할 수 있는
iterable 연속 발생시키는
subscriptable 다른 개체를 포함하는 컨테이너같은 개체, 인덱싱할 수 있는
inconsistent use of tabs and spaces in indentation 들여쓰기 탭이랑 띄어쓰기랑 섞어썼을 때

4. 전역함수

함수 안에서 만든 변수가 밖에서도 통용되길 바란다면 해당 함수 안에서 global로 선언해준 뒤 사용하면 된다.

def 함수():
	global a
    a = 123

fun()    
print(a)


근데 함수 안에서 global 선언할 때는 맨 첫줄에 해주는 게 안전하다.
up에서는 얌전하다가 down에서는 난리난 거 보이는지
name 'y' is used prior to global declaration 이런 오류가 뜬다.
왜인지는.. 차차 알아보자...


밖에서 만든 변수를 함수 안에서 사용하는 것도 비슷하게 가능하다.

5. 함수 return

밖에서 만든 변수를 함수 안에서 변경한 후 return 해줬어도

처럼 실행했을 때 밖에서 안 받아주면 바깥에서는 변경이 안 되어있음

6. 문자열 함수들

문자열에 쓰는 replace, strip같은 함수들은

string.replace('바꿀거', '대체재') # 이러면 적용이 안 됨
string = string.replace('바꿀거', '대체재') # 대입을 해줘야 됨

7. deque

list는 서랍장같은 느낌
칸마다 뭐가 들어있게 하는 거라서
앞이나 중간쯤에서 빼거나 추가하면
그 뒤부터 다같이 한칸씩 이동하느라 O(N)
뒤에서 추가(append)하는 건 괜찮지만...
아니라면 효율이 매우 떨어진다.

deque는 찰흙같은 느낌
그냥 떼어내면 되는 거라서 O(1)

메소드 .append() 이런 형태로 쓰는 거 쭉 불러줄게

  • deque(덱으로 만들 iterable 객체, mexlen생략가능)
  • append(x), appendleft(x)
  • pop, popleft
  • count(x)
  • extend(iterable 객체), extendleft(iterable 객체)
  • index(x)
  • remove(x)
  • rotate(k)

len(deq)도 가능하고 list와 별 차이 없음, count는 비슷하거나 덱이 좀 더 걸림

0개의 댓글