Вопрос по python, list – Как передать элементы кортежей в функцию в качестве аргументов в python?

12

У меня есть список, состоящий из кортежей, я хочу передать каждому элементу кортежа функцию в качестве аргументов:

mylist = [(a, b), (c, d), (e, f)]

myfunc(a, b)
myfunc(c, d)
myfunc(e, f)

Как мне это сделать?

С уважением

Да, прости. я исправлю это. alwbtc
Я предполагаю, что в примере есть ошибка иmyfunc(e, d) должен был бытьmyfunc(e, f)иначе вам придется объяснить причину второго аргументаd там. Gareth Latty

Ваш Ответ

2   ответа
1

Чтобы сделать комментарий @ DSM явным:

>>> from itertools import starmap
>>> list(starmap(print, ((1,2), (3,4), (5,6)))) 
# 'list' is used here to force the generator to run out.
# You could instead just iterate like `for _ in starmap(...): pass`, etc.
1 2
3 4
5 6
[None, None, None] # the actual created list;
# `print` returns `None` after printing.
Error: User Rate Limit ExceededstarmapError: User Rate Limit Exceededfor _ in starmap(...): passError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
25

На самом деле это очень просто сделать в Python, просто перебрать список и использовать оператор splat (*) распаковать кортеж в качестве аргументов для функции:

mylist = [(a, b), (c, d), (e, f)]
for args in mylist:
    myfunc(*args)

Например:

>>> numbers = [(1, 2), (3, 4), (5, 6)]
>>> for args in numbers:
...     print(*args)
... 
1 2
3 4
5 6
Error: User Rate Limit Exceededfrom __future__ import print_function.
Error: User Rate Limit Exceededfunc(*args)Error: User Rate Limit ExceededprintError: User Rate Limit Exceededprint(*args)Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededdef _print(*args): print ' '.join(map(str, args))
Error: User Rate Limit Exceededitertools.starmap.
Error: User Rate Limit ExceededprintError: User Rate Limit Exceededprint(1)Error: User Rate Limit Exceededprint 1Error: User Rate Limit Exceededreturn(1)Error: User Rate Limit Exceededreturn 1.

Похожие вопросы