본문 바로가기

1.344

Python 왜 파이썬에는 튜플 내장(comprehension)이 없을까요?, Why is there no tuple comprehension in Python? 질문 우리는 모두 알다시피, 리스트 컴프리헨션이 있습니다. 예를 들면 [i for i in [1, 2, 3, 4]] 그리고 딕셔너리 컴프리헨션이 있습니다. 예를 들면 {i:j for i, j in {1: 'a', 2: 'b'}.items()} 하지만 (i for i in (1, 2, 3)) 는 제너레이터가 됩니다. tuple 컴프리헨션이 아닙니다. 그 이유는 무엇일까요? 제 추측은 tuple이 불변형(immutable)이기 때문인데, 이것이 정답인 것 같지는 않습니다. 답변 생성자 표현식을 사용할 수 있습니다: tuple(i for i in (1, 2, 3)) 하지만 괄호는 이미 생성자 표현식을 위해 사용되었습니다. 2023. 10. 16.
Python 두 개의 마커 사이의 부분 문자열을 추출하는 방법은 무엇인가요?, How to extract the substring between two markers? 질문 어떤 문자열 'gfgfdAAA1234ZZZuijjk'이 있다고 가정하고, '1234' 부분만 추출하고 싶습니다. AAA 바로 전에 있는 몇 개의 문자만 알고 있으며, ZZZ 이후에는 1234와 같이 관심 있는 부분입니다. sed를 사용하면 다음과 같이 문자열에 대해 작업할 수 있습니다: echo "$STRING" | sed -e "s|.*AAA\(.*\)ZZZ.*|\1|" 이렇게 하면 결과로 1234를 얻을 수 있습니다. Python에서는 어떻게 같은 작업을 수행할 수 있을까요? 답변 정규 표현식을 사용하여 - 문서를 참조하세요 import re text = 'gfgfdAAA1234ZZZuijjk' m = re.search('AAA(.+?)ZZZ', text) if m: found = m.group.. 2023. 10. 13.
Python 스코프 규칙에 대한 간단한 설명, Short description of the scoping rules 질문 파이썬의 스코핑 규칙은 정확히 무엇인가요? 다음과 같은 코드가 있다면: code1 class Foo: code2 def spam..... code3 for code4..: code5 x() x는 어디에서 찾을 수 있을까요? 가능한 선택지는 아래 목록에 포함됩니다: 감싸고 있는 소스 파일에서 클래스 네임스페이스에서 함수 정의에서 for 루프의 인덱스 변수에서 for 루프 안에서 또한 함수 spam이 다른 곳으로 전달될 때 실행 중인 문맥도 있습니다. 그리고 아마도 람다 함수는 조금 다르게 전달될 수도 있습니다. 중급 파이썬 프로그래머에게 혼동스러운 세상에는 반드시 간단한 참고 자료나 알고리즘이 있을 것입니다. 답변 실제로, 파이썬 범위 결정에 대한 간결한 규칙은 Learning Python, 3rd... 2023. 10. 13.
Python 제너레이터 표현식 대 리스트 내장, Generator expressions vs. list comprehensions 질문 파이썬에서 제너레이터 표현식과 리스트 컴프리헨션을 언제 사용해야 할까요? # 제너레이터 표현식 (x*2 for x in range(256)) # 리스트 컴프리헨션 [x*2 for x in range(256)] 답변 John의 답변은 좋습니다 (리스트 컴프리헨션은 여러 번 반복해야 할 때 더 좋습니다). 그러나 리스트 메소드를 사용하려면 리스트를 사용해야 한다는 점도 유의해야 합니다. 예를 들어, 다음 코드는 작동하지 않습니다: def gen(): return (something for something in get_some_stuff()) print gen()[:2] # 제너레이터는 인덱싱이나 슬라이싱을 지원하지 않습니다 print [5,6] + gen() # 제너레이터는 리스트에 추가할 수 없습니.. 2023. 10. 13.