如何迭代到列表中的元组

时间:2014-11-22 19:21:13

标签: python list python-3.x iteration tuples

我正在编写一个程序,我在这样的列表中有一堆元组:

[('a01', '01-24-2011', 's1'), ('a03', '01-24-2011', 's2')等。

元组是格式

(animal ID, date(month, day, year), station# )

我不知道如何访问有关该月份的信息。

我试过了:

months = []    
for item in list:
    for month in item:
        if month[0] not in months:
            months.append(month[0])

我在python 3工作。

5 个答案:

答案 0 :(得分:9)

L = [('a01', '01-24-2011', 's1'), ('a03', '01-24-2011', 's2')]
for animal, date, station in L:
    month, day, year = date.split('-')
    print("animal ID {} in month {} at station {}".format(animal, month, station))

输出:

animal ID a01 in month 01 at station s1
animal ID a03 in month 01 at station s2

答案 1 :(得分:1)

基本思想是获取元组的第二项,即字符串,然后获取字符串的前两个字符。那些角色描述了月份。

我将逐步完成整个过程。

我们假设您有一个名为data的列表:

data = [('a01', '01-24-2011', 's1'), ('a03', '01-24-2011', 's2')]

取第一项:

item = data[0]

item的值是元组('a01', '01-24-2011', 's1')

item的第二个元素:

date = item[1]

date的值是字符串'01-24-2011'

date的前两个字符:

month = date[:2]

month的值是字符串01。您可以将其转换为整数:

month = int(month)

现在month的值为1

答案 2 :(得分:1)

使用列表推导:

data = [('a01', '01-24-2011', 's1'), ('a03', '01-24-2011', 's2')]

months = [item[1].split('-')[0] for item in data]

print(months)

答案 3 :(得分:0)

>>> my_list = [('a01', '01-24-2011', 's1'), ('a03', '01-24-2011', 's2')]
>>> [ x for x in map(lambda x:x[1].split('-')[0],my_list) ]
['01', '01']

你可以使用map和lambda

答案 4 :(得分:0)

如果您只想要一个独特的月份列表,那么订单无关紧要使用一套:

months = list({date.split("-",1)[0] for _, date, _ in l})