파이썬 자료구조
·
Python
1. 리스트(list)인덱스 접근 []: O(1)append(): O(1)pop() (맨 끝 요소 제거): O(1)pop(i) (임의 위치 i에서 제거): O(n)insert(i, x): O(n)del del list[i]:마지막 요소 제거: O(1)임의 위치에서 제거: O(n)remove(x): O(n) (값을 찾기 위한 선형 탐색 필요)index(x): O(n)sort(): O(nlog⁡n)reverse(): O(n)len(): O(1)슬라이싱 list[start:end]: O(k) (슬라이싱되는 길이에 비례)2. 딕셔너리(dict)인덱스 접근 d[key]: O(1)삽입 및 업데이트 d[key] = value: O(1)삭제 del d[key]: O(1)get(key): O(1)pop(key): O(1..
mutable(변경 가능)과 immutable(변경 불가능)
·
Python
파이썬에서 리스트(List)는 mutable(변경 가능)하고, 문자열(String)은 immutable(변경 불가능)하다는 의미는 그 데이터 타입이 변경 가능한지, 즉 그 안에 저장된 요소를 직접 수정할 수 있는지와 관련이 있습니다.1. 리스트 (mutable)mutable(변경 가능)하다는 것은 리스트의 요소를 직접 수정할 수 있다는 뜻입니다. 리스트의 특정 요소를 바꾸거나, 요소를 추가하거나, 삭제할 수 있습니다.예시:my_list = [1, 2, 3]my_list[0] = 10 # 리스트의 첫 번째 요소를 10으로 변경print(my_list) # 출력: [10, 2, 3]my_list.append(4) # 새로운 요소 추가print(my_list) # 출력: [10, 2, 3, 4]여기서 ..
파이썬 | functools.wraps
·
Python
1차프로젝트때 로그인 데코레이터에 붙어있던 @wraps # core/utils.py def accessCkeck(func): def wrapper(self, request, *args, **kwargs): ... return func(self, request, *args, **kwargs) return wrapper # carts/views.py ... class CartView(View): @accessCkeck def post(self, request): """carts에 post요청이 오면 카트생성""" # docstring추가 ... 나도 2차때 써봤는데 정확히 무슨 역할을 하는건지 알아보지 않고 참고링크 글에서 다른 개발자와 협업할때 데코레이터를 만들거라면 사용하는게 좋다!는 말만 보고 사용했었..
파이썬 | Type Hints, 타입 지정하기
·
Python
파이썬은 변수에 타입이 없는 동적언어이다. 하지만 타입힌트를 통해서 타입을 표시할 수 있다. 함수 def greeting(name: str) -> str: return 'Hello ' + name 함수의 경우에는 이렇게 함수명(매개변수명: 타입) -> 리턴타입으로 지정할 수 있다. 타입힌트는 말그대로 힌트일뿐 다른 타입이 들어온다고 해서 에러가 나지는 않는다. def greeting(name: int) -> str: return 'Hello ' + name print(greeting("메롱")) # Hello 메롱 .__annotations__로 타입을 확인해볼 수 있다. print(greeting.__annotations__) # {'name': , 'return': } 변수 name: str = "김..
파이썬 | max, sorted,...의 key사용
·
Python
max max(list)는 리스트에서 제일 큰 값을 반환한다. 그런데 key를 지정해서 인자로 넣어주면 기준을 정해줄 수 있다. max(list, key=list.count)를 하면 요소의 개수가 가장 큰 값을 반환한다.(가장 많이 나온 값) nums = [1,2,1,1,2,3] print( max(nums) ) print( max(nums, key=nums.count) ) # 결과 # 3 # 1 max를 사용할 때는 리스트를 set으로 바꿔주는게 좋다. set은 중복을 제거하기때문에 위의 경우에는 .count를 3번만 확인하기 때문이다. 그리고 nums.count대신 람다식을 사용하는 것이 좋다. 메모리를 덜 잡아먹기 때문이다. max( set(nums), key=lambda num: nums.coun..
파이썬 | for 요소 in 리스트
·
Python
nums = [1,2,3,4,5] for num in nums: print(num) # 결과 # 1 # 2 # 3 # 4 # 5 for문을 돌리면 이렇게 리스트의 요소가 차례대로 num에 할당이 된다. 그런데 이것도 사실 인덱스 기준이다. 그래서 값을 삭제하면서 for문을 돌리면 nums = [1,2,3,4,5] for num in nums: nums.remove(num) print(num) # 결과 # 1 # 3 # 5 이렇게 1, 3, 5만 출력된다. nums[0]인 1을 삭제한 후 nums=[2, 3, 4, 5]가 되고 그 다음 요소는 nums[1]인 3이기 때문이다. 그래서 마지막에 print(nums)로 출력해보면 [2, 4]가 남아있는 결과를 볼 수 있다. nums를 직접 돌리지 않고 nums..
파이썬 오류 | "{" was not closed Pylance
·
Python
장고 어플리케이션의 뷰를 작성하면서 오류가 났다 아래 코드 {}, () 전부 닫히지 않았다는 메세지가 떴다 results.append( { 'name': owner.name 'email': owner.email 'age': owner.age } ) "{" was not closed Pylance "(" was not closed Pylance 이렇게 둘다 에러가 났는데 둘다 괄호가 잘 닫혀있어서 어디가 문젠지 찾을수가 없었다 그래서 메세지를 검색해보다가 https://www.reddit.com/r/learnpython/comments/riegjq/was_not_closed_what_am_i_missing/ 이 페이지를 찾고 오류를 찾았다 딕셔너리 구분하는 ,가 빠져있었다. results.append( {..
파이썬 | 모듈 임포트 하는법
·
Python
모듈 파이썬 모듈은 변수, 함수, 클래스 등을 따로 모아놓은 파일이다. 모듈을 사용하는 이유 다른 파일에서 모듈에 있는 함수 등의 재사용이 가능하다. 파이썬의 len()함수 등을 직접 구현하지 않아도 사용할 수 있는건 파이썬이 함수를 모듈로 구현해놨기 때문이다. 모듈을 불러오는법 # my_module.py my_module_var = 7 my_module.py라는 모듈을 만들고 그 안에 my_module_var를 정의했다. import 모듈명 이 변수를 다른 파일에서 불러오려면 import를 사용하면 된다. # main.py import my_module# .py는 붙이지 않는다 그리고 사용할 때는 임포트한 모듈 이름.사용할 변수/함수/클래스 이름을 적어주면 된다. # main.py import my_m..
반응형