如何切割与对象属性相关的对象列表
问题描述:
我有一个灯具列表。每个灯具都有一个家庭俱乐部和一个客场俱乐部属性。我想将它的主场俱乐部和客场俱乐部。切片清单应该是家庭俱乐部物品和远东俱乐部物品。如何切割与对象属性相关的对象列表
更简单的方法来实现这一点,首先切分灯具清单。然后制作相应的家庭俱乐部和客场俱乐部的新名单。我想知道我们是否可以做到这一步。
答
这不是很清楚你想要做什么,但是这个代码将采取的第一个五年固定装置,并返回一个元组列表,每个都包含一个家,相应的对象的客场价值:
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]]
答
不完全是你以后的答案,但(假设[(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)))
+0
Yup也做得很好 – gizgok 2010-04-25 07:49:24
感谢您的reply.Exactly我需要什么 – gizgok 2010-04-25 07:48:29
@gizgok:如果这是你需要什么,不忘记接受答案(当网站给你一个机会时)。传播业力! – 2010-04-25 08:05:16
@Max 我正在尝试这样做: clubs = [c.home,c.away in fixtures [:5]]它给出错误。 请原谅我对python的知识缺乏,但是如果可以的话,可以在一个stmt中再次完成这个工作如何使用 – gizgok 2010-04-25 10:13:29