【发布时间】:2010-04-25 06:41:34
【问题描述】:
我有一个赛程列表。每个赛程都有一个主俱乐部和一个客场俱乐部属性。我想根据主俱乐部和客场俱乐部的关联对列表进行切片。切片列表应该是主俱乐部项目和客场俱乐部项目。
实现这一点的更简单方法是首先对赛程列表进行切片。然后制作相应的主队和客队俱乐部的新列表。我想知道我们是否可以做到这一点。
【问题讨论】:
我有一个赛程列表。每个赛程都有一个主俱乐部和一个客场俱乐部属性。我想根据主俱乐部和客场俱乐部的关联对列表进行切片。切片列表应该是主俱乐部项目和客场俱乐部项目。
实现这一点的更简单方法是首先对赛程列表进行切片。然后制作相应的主队和客队俱乐部的新列表。我想知道我们是否可以做到这一点。
【问题讨论】:
不清楚您要做什么,但此代码将采用前五个固定装置,并返回一个元组列表,每个元组都包含相应对象的 home 值和 away 值:
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]]
【讨论】:
for c 部分:clubs = [c.home, c.away for c in fixtures[:5]]。
不是您想要的答案,但是(假设 [(home1, away1), (home2, away2), ...])这与您将得到的一样简单。
homes = [h for h,a in fixtures]
aways = [a for h,a in fixtures]
【讨论】:
当然,还有一些工作:
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)))
【讨论】: