본문 바로가기

전체 글980

Python 전치 / 압축 해제 기능 (zip의 역함수)?, Transpose/Unzip Function (inverse of zip)? 질문 나는 2개의 항목을 가진 튜플 목록이 있으며, 이를 첫 번째 항목을 포함하는 첫 번째 목록과 두 번째 항목을 포함하는 두 번째 목록으로 변환하고 싶습니다. 예를 들어: original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)] # 그리고 나는 다음과 같이 되기를 원합니다... result = (['a', 'b', 'c', 'd'], [1, 2, 3, 4]) 이를 수행하는 내장 함수가 있을까요? 답변 2.x에서는 zip이 자체적으로 역함수입니다! 특별한 * 연산자를 사용하면 됩니다. >>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)]) [('a', 'b', 'c', 'd'), (1, 2, 3, 4)] 이는 리스트의 각 요소를 별도.. 2023. 9. 12.
Python 파이썬에서 어떻게 명시적으로 메모리를 해제할 수 있을까요?, How can I explicitly free memory in Python? 질문 나는 큰 입력 파일에 작용하는 파이썬 프로그램을 작성했습니다. 이 프로그램은 수백만 개의 삼각형을 나타내는 객체를 생성합니다. 알고리즘은 다음과 같습니다: 입력 파일을 읽습니다 파일을 처리하고 삼각형의 리스트를 생성합니다. 이 삼각형은 정점으로 표현됩니다 OFF 형식으로 정점의 리스트 다음에 삼각형의 리스트를 출력합니다. 삼각형은 정점의 리스트 내의 인덱스로 나타냅니다 OFF의 요구사항으로 인해 삼각형의 리스트를 파일로 출력하기 전에 정점의 완전한 리스트를 출력해야 합니다. 그러나 리스트의 크기 때문에 메모리 오류가 발생합니다. 어떻게 하면 Python에게 일부 데이터가 더 이상 필요하지 않으며, 해제될 수 있다고 알릴 수 있을까요? 답변 Python 공식 문서에 따르면, Garbage Collec.. 2023. 9. 12.
Python 멀티라인 문자열의 적절한 들여쓰기는 어떻게 해야 하나요?, Proper indentation for multiline strings? 질문 파이썬 함수 내에서 멀티라인 문자열의 적절한 들여쓰기는 무엇인가요? def method(): string = """line one line two line three""" 또는 def method(): string = """line one line two line three""" 또는 다른 방법이 있나요? 첫 번째 예시에서 함수 밖에 문자열이 따로 놓여 있는 것이 좀 이상해 보입니다. 답변 아마도 """과 일치하도록 정렬하고 싶을 것입니다. def foo(): string = """line one line two line three""" 새 줄과 공백이 문자열 자체에 포함되어 있으므로 후처리해야합니다. 후처리를 원하지 않고 많은 양의 텍스트를 가지고 있다면 텍스트 파일에 별도로 저장하는 것이 좋습니.. 2023. 9. 12.
Python 출력에서 파이썬 버전을 인쇄하기, Printing Python version in output 질문 내 스크립트에서 현재 Python 설치의 버전 번호를 출력하는 방법은 무엇인가요? 답변 시도해보세요 import sys print(sys.version) 이 코드는 전체 버전 정보 문자열을 출력합니다. 파이썬 버전 번호만 필요한 경우에는 Bastien Léonard의 해결책이 가장 좋습니다. 전체 문자열을 검사하여 필요한 부분만 사용할 수도 있습니다. 2023. 9. 12.
Python 파이썬에서 requests를 사용하여 큰 파일을 다운로드하세요., Download large file in python with requests 질문 Requests는 정말 좋은 라이브러리입니다. 저는 이를 사용하여 큰 파일(>1GB)을 다운로드하고 싶습니다. 문제는 전체 파일을 메모리에 유지할 수 없다는 것입니다. 파일을 청크 단위로 읽어야 합니다. 그리고 다음 코드에서 이것이 문제입니다: import requests def DownloadFile(url) local_filename = url.split('/')[-1] r = requests.get(url) f = open(local_filename, 'wb') for chunk in r.iter_content(chunk_size=512 * 1024): if chunk: # 필터링하여 keep-alive 새 청크를 제외합니다. f.write(chunk) f.close() return 어떤 이유.. 2023. 9. 12.
Python 예외가 발생한 예외 설명과 스택 추적을 문자열로 모두 가져오기, Get exception description and stack trace which caused an exception, all as a string 질문 어떻게 잡힌 Exception (그 설명과 스택 추적)을 외부에서 사용하기 위해 str으로 변환할 수 있을까요? try: method_that_can_raise_an_exception(params) except Exception as e: print(complete_exception_description(e)) 답변 다음은 traceback 모듈을 참조하세요. 특히 format_exc() 함수입니다. 여기. import traceback try: raise ValueError except ValueError: tb = traceback.format_exc() else: tb = "에러 없음" finally: print tb 2023. 9. 12.
Python 파이썬에서 C/C++ 호출하기? [닫힘], Calling C/C++ from Python? [closed] 질문 파이썬 바인딩을 C 또는 C++ 라이브러리에 가장 빠르게 구축하는 방법은 무엇인가요? (이것이 중요한 사항이라면, 저는 Windows를 사용하고 있습니다.) 답변 ctypes 모듈은 표준 라이브러리의 일부이므로 swig보다 안정적이고 널리 사용할 수 있습니다. swig은 항상 문제를 일으키는 경향이 있었습니다. ctypes를 사용하면 python에 대한 컴파일 타임 종속성을 충족해야하며, 바인딩은 컴파일된 python뿐만 아니라 ctypes를 가진 모든 python에서 작동합니다. 간단한 C++ 예제 클래스를 foo.cpp라는 파일에서 작업하려는 경우를 가정해보겠습니다. #include class Foo{ public: void bar(){ std::cout 2023. 9. 12.
Python 파이썬에서 디렉토리 트리 목록, Directory-tree listing in Python 질문 Python에서 주어진 디렉토리의 모든 파일(및 디렉토리) 목록을 어떻게 가져올 수 있나요? 답변 이것은 디렉토리 트리에서 모든 파일과 디렉토리를 탐색하는 방법입니다: import os for dirname, dirnames, filenames in os.walk('.'): # 모든 하위 디렉토리에 대한 경로를 출력합니다. for subdirname in dirnames: print(os.path.join(dirname, subdirname)) # 모든 파일 이름에 대한 경로를 출력합니다. for filename in filenames: print(os.path.join(dirname, filename)) # 고급 사용법: # 'dirnames' 목록을 편집하면 os.walk()이 해당 디렉토리로 .. 2023. 9. 12.