저는 Clojure에서 Python을 사용하려고합니다. 생성기 내부에 "임시 변수"를 갖는 방법이 있는지 궁금합니다. , I는 None
결과를 필터링 회 발생기를 사용할 필요 파이썬파이썬 생성기를위한`let` 또는`as` 키워드가 있습니까?
(def fnames ["abc1234" "abcdef" "1024"])
(for [fname fnames
:let [matches (re-matches #"(\w+?)(\d+)" fname)]
:when matches]
matches)
;=> (["abc10" "abc" "1234"] ["1024" "1" "024"])
:
는 Clojure에에서, I는 상품에 중간 계산 이름을 생성하기위한 내부 let
사용할 수
fnames = ["abc1234", "abcdef", "1024"]
matches = [re.match('(\w+?)(\d+)', fname) for fname in fnames]
matches = [match.groups() for match in matches if match is not None]
# [('abc', '1234'), ('1', '024')]
그래서 다음과 같은 방법이 있습니까? 그렇지 않다면 가장 Pythonic 한 방법은 무엇입니까?
matches = [re.match('(\w+?)(\d+)', fname) as match
for fname in fnames
if match is not None]
그래서 더 일반적인 접근법은 발전기를 중첩하는 것입니까? 필자가 filter/map/reduce보다 더 읽기 쉬울 지 모르겠습니다. –
@BrunoKim - 예. 사실, generator/expression/list comprehensions은 대부분의 Python 프로그래머가 filter/map/reduce 솔루션을 사용하는 것을 선호합니다. 나열된 기능을 향후 버전의 언어에서 제거하는 방법조차 있습니다. 즉, 당신은 여전히 당신의 이해력의 길이를 봐야한다고 말했다. 한 줄로 모든 것을 다 처리해야하는 것은 아닙니다. :) – iCodez