본문 바로가기

Python/Python FAQ540

Python 파이썬에서 슬라이싱 작동 방식, How slicing in python works 질문 Python의 슬라이스 표기법은 어떻게 작동하나요? 즉, a[x:y:z], a[:], a[::2] 등과 같은 코드를 작성할 때, 어떤 요소가 슬라이스에 포함되는지 이해하는 방법은 무엇인가요? 적절한 참조를 포함해주세요. 표기법의 디자인 결정에 대한 논의를 위해서는 Why are slice and range upper-bound exclusive?를 참조하십시오. 슬라이싱의 가장 일반적인 실제 사용 사례인 리스트에서 매 N번째 항목 가져오기 (그리고 이 문제를 해결하는 다른 방법)에 대해서는 Pythonic way to return list of every nth item in a larger list를 참조하십시오. 적절한 경우 이 질문을 중복 대상으로 사용하십시오. 슬라이스 할당에 대한 더 구체적.. 2023. 5. 4.
Python @staticmethod와 @classmethod의 차이점, Difference between @staticmethod and @classmethod 질문 데코레이트된 메소드와 @staticmethod로 데코레이트된 메소드, 그리고 @classmethod로 데코레이트된 메소드의 차이점은 무엇인가요? 답변 아래의 예제 코드를 보면서 이해해보세요: foo, class_foo, static_foo의 호출 시그니처의 차이점을 주목하세요: class A(object): def foo(self, x): print(f"executing foo({self}, {x})") @classmethod def class_foo(cls, x): print(f"executing class_foo({cls}, {x})") @staticmethod def static_foo(x): print(f"executing static_foo({x})") a = A() 아래는 객체 인스턴스가.. 2023. 5. 4.
Python 리스트의 리스트를 평평한 리스트로 만드는 방법은 무엇인가요?, How do I make a flat list out of a list of lists? 질문 저는 다음과 같은 리스트의 리스트가 있습니다. [ [1, 2, 3], [4, 5, 6], [7], [8, 9] ] 이것을 평평한 리스트인 [1, 2, 3, 4, 5, 6, 7, 8, 9]로 만들 수 있을까요? 만약 리스트의 리스트가 중첩된 리스트 컴프리헨션에서 나온 것이라면, 컴프리헨션을 수정함으로써 더 간단하고 직접적으로 해결할 수 있습니다. 리스트 컴프리헨션에서 중첩된 리스트 대신 평평한 결과를 어떻게 얻을 수 있나요?를 참조하십시오. 여기에서 가장 인기 있는 솔루션들은 일반적으로 중첩된 리스트의 하나의 "레벨"만 평평하게 만듭니다. 일반적으로 재귀적으로 완전히 중첩된 구조를 완전히 평평하게 만드는 솔루션을 참조하려면 불규칙한(임의로 중첩된) 리스트의 리스트를 평평하게 만들기를 참조하십시오. 답.. 2023. 5. 4.
Python 'for' 루프에서 인덱스에 접근하기, Accessing the index in 'for' loops 질문 for 루프를 사용하여 시퀀스를 반복하면서 인덱스에 액세스하는 방법은 무엇인가요? xs = [8, 23, 45] for x in xs: print("item #{} = {}".format(index, x)) 원하는 출력: item #1 = 8 item #2 = 23 item #3 = 45 답변 enumerate() 내장 함수를 사용하세요: for idx, x in enumerate(xs): print(idx, x) for i in range(len(xs)): x = xs[i]로 수동 색인을 하는 것이나 추가 상태 변수를 수동으로 관리하는 것은 non-pythonic합니다. 자세한 내용은 PEP 279을 확인하세요. 2023. 5. 4.