2013-07-26 2 views
1

У меня есть список кортежей:Перебора списка кортежей, вызовите элементы независимо

Months = [('2011-01-01', '2011-02-01'), ('2011-02-01', '2011-03-01'), ('2011-03-01', '2011-04-01'), ...] 

Я хотел бы определить функцию, которая перебирает список и вызывает элементы кортежа самостоятельно. Например:

def function(list): 
    print """ 
    Start %s 
    End %s 
    """ % list 

Я бы им сделать что-то вроде:

for tuple in months: 
    function(tuple) 

Очевидно, у меня есть проблема, как у меня есть два% S, но только один аргумент.

Есть ли способ сделать это?

ответ

1

Просто сделайте lst кортеж, так называют function для каждого элемента в вашем Months списке:

for start_end in Months: 
    func(start_end) 

и сделать вашу строку использовать три цитату:

def func(tup): 
    print """ 
    Start %s 
    End %s 
    """ % tup 

Строка форматирование поддерживает переходящее в кортеж, определенный в переменной, если он имеет правильную длину:

>>> tup = ('2011-01-01', '2011-02-01') 
>>> print """ 
...  Start %s 
...  End %s 
...  """ % tup 

    Start 2011-01-01 
    End 2011-02-01 

В качестве альтернативы, используйте str.format() форматировать:

def func(tup): 
    print """ 
    Start {0[0]} 
    End {0[0]} 
    """.format(tup) 

Вы также можете использовать кортеж распаковка; присвоить каждый кортеж в списке два переменных в цикле:

for start, end in Months: 
    print 'Start {}\nEnd'.format(start, end) 
1
for date1, date2 in Months: 
    print """" 
    Start %s 
    End %s 
    """" % (date1, date2) 
Смежные вопросы