Python 如何对对象属性关联的对象列表进行切片
我有一个赛程列表。每个赛程都有一个主场俱乐部和一个客场俱乐部属性。我想将该列表按照其主场俱乐部和客场俱乐部的关联进行切片。切片列表应该是主场俱乐部项目和客场俱乐部项目Python 如何对对象属性关联的对象列表进行切片,python,list,object,Python,List,Object,我有一个赛程列表。每个赛程都有一个主场俱乐部和一个客场俱乐部属性。我想将该列表按照其主场俱乐部和客场俱乐部的关联进行切片。切片列表应该是主场俱乐部项目和客场俱乐部项目 实现这一点更简单的方法是先将赛程列表切分。然后将相应的主场俱乐部和客场俱乐部列成一个新的列表。我想知道我们是否能做到这一点。这不是你想要的答案,但是(假设[(主场1,主场1),(主场2,主场2),…]))这就跟你得到的一样简单 homes = [h for h,a in fixtures] aways = [a for h,a i
实现这一点更简单的方法是先将赛程列表切分。然后将相应的主场俱乐部和客场俱乐部列成一个新的列表。我想知道我们是否能做到这一点。这不是你想要的答案,但是(假设
[(主场1,主场1),(主场2,主场2),…])
)这就跟你得到的一样简单
homes = [h for h,a in fixtures]
aways = [a for h,a in fixtures]
不太清楚您要做什么,但是这段代码将获取前五个fixture,并返回一个元组列表,每个元组包含各自对象的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]]
当然,需要做一点工作:
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
或:
谢谢你的回复。正是我想要的needed@gizgok:如果这正是你需要的,不要忘记接受答案(当网站给你机会时)。传播业力@马克斯:我试着这么做:球杆=[c.主场,c.客场比赛[:5]]这是一个错误。请原谅我缺乏python知识,但是如果是的话,这可以在一次stmt中再次实现吗How@gizgok:您忘记了c的
部分:俱乐部=[c.home,c.away,c.in fixtures[:5]]
。是的,这项工作也做得很好
home, away = zip(*itertools.imap(operator.attrgetter('home', 'away'),
itertools.islice(fixture, 5, None)))