인수로 튜플 확장
Python tuple을 실제 파라미터로 함수로 확장하는 방법이 있습니까?
예를 들어, 여기expand()
마법은 다음과 같습니다.
some_tuple = (1, "foo", "bar")
def myfun(number, str1, str2):
return (number * 2, str1 + str2, str2 + str1)
myfun(expand(some_tuple)) # (2, "foobar", "barfoo")
내가 알기로는myfun
~하듯이myfun((a, b, c))
물론 레거시 코드가 있을 수 있습니다.감사해요.
myfun(*some_tuple)
원하는 대로 할 수 있습니다.그*
연산자는 단순히 태플(또는 반복 가능)을 풀고 위치 인수로 함수에 전달합니다.인수 압축 해제에 대한 자세한 내용을 읽어 보십시오.
인수 목록의 일부를 확장할 수도 있습니다.
myfun(1, *("foo", "bar"))
Python 튜토리얼 섹션 4.7.3 및 4.7.4를 참조하십시오.그것은 인수로써 tuples 전달에 대해 이야기한다.
또한 튜플을 사용하여 시퀀스를 전달하는 대신 명명된 매개 변수를 사용하는 것도 고려합니다.위치가 직관적이지 않거나 여러 개의 매개변수가 있을 때 위치 인수를 사용하는 것은 좋지 않은 관행이라고 생각합니다.
이것이 기능 프로그래밍 방법입니다.구문설탕에서 태플 확장 기능을 제거합니다.
apply_tuple = lambda f, t: f(*t)
재정의apply_tuple
를 많이 절약하기 위해partial
장기간에 걸친 콜:
from toolz import curry
apply_tuple = curry(apply_tuple)
사용 예:
from operator import add, eq
from toolz import thread_last
thread_last(
[(1,2), (3,4)],
(map, apply_tuple(add)),
list,
(eq, [3, 7])
)
# Prints 'True'
@Dominykas의 답변과 마찬가지로 다중 인수 수용 함수를 태플 수용 함수로 변환하는 데코레이터입니다.
apply_tuple = lambda f: lambda args: f(*args)
예 1:
def add(a, b):
return a + b
three = apply_tuple(add)((1, 2))
예 2:
@apply_tuple
def add(a, b):
return a + b
three = add((1, 2))
features [ 2 ]는 태플('흰색', '미취업', '수입')입니다.
이제 열에 대한 매개변수 리스트로 기능[2]을 사용하려면
all_data[list(np.asarray(features[2]))]
언급URL : https://stackoverflow.com/questions/1993727/expanding-tuples-into-arguments
'programing' 카테고리의 다른 글
JavaScript에서 지연, 약속 및 미래의 차이점은 무엇입니까? (0) | 2022.12.29 |
---|---|
XAMPP 제어판 v3.2.1에서 VMware 포트 오류 443을 중지하는 방법 (0) | 2022.12.29 |
JavaScript 폐쇄 vs. 익명 함수 (0) | 2022.12.19 |
MariaDB - 두 json 객체 비교 (0) | 2022.12.19 |
문자, 디지털 문자, 특수 문자 없이 단어와 일치시키기 위해 정규 표현을 어떻게 사용하는가? (0) | 2022.12.19 |