如何切割对象属性关联的对象列表

时间:2010-04-25 06:41:34

标签: python list object

我有一个灯具列表。每个灯具都有一个家庭俱乐部和一个客场俱乐部属性。我想把它的家庭俱乐部和远足俱乐部联系在一起。切片列表应该是家庭俱乐部项目和离家俱乐部项目。

更容易实现这一点的方法是首先切割一个灯具列表。然后制作相应的家庭俱乐部和客场俱乐部的新列表。我想知道我们是否可以这一步。

3 个答案:

答案 0 :(得分:3)

目前还不是很清楚你要做什么,但是这段代码将采用前五个灯具,并返回一个元组列表,每个元组包含一个home和相应对象的off值:

result = [(i.home, i.away) for i in fixtures[:5]]

这会将两者分成两个列表:

homes = [i.home for i in fixtures[:5]]
aways = [i.away for i in fixtures[:5]]

或者在一条线上:

homes, aways = [i.home for i in fixtures[:5]], [i.away for i in fixtures[:5]]

答案 1 :(得分:0)

不完全是你所追求的答案,但是(假设为[(home1, away1), (home2, away2), ...])这就像你会得到的一样简单。

homes = [h for h,a in fixtures]
aways = [a for h,a in fixtures]

答案 2 :(得分:0)

当然,做了一些工作:

def split(fixture):
    home, away = [], []
    for i, f in enumerate(fixture):
        if i >= 5:
            home.append(f.home)
            away.append(f.away)
    return home, away

或者:

home, away = zip(*itertools.imap(operator.attrgetter('home', 'away'),
    itertools.islice(fixture, 5, None)))