2010-04-25 138 views
2

我有一个灯具列表。每个灯具都有一个家庭俱乐部和一个客场俱乐部属性。我想将它的主场俱乐部和客场俱乐部。切片清单应该是家庭俱乐部物品和远东俱乐部物品。如何切割与对象属性相关的对象列表

更简单的方法来实现这一点,首先切分灯具清单。然后制作相应的家庭俱乐部和客场俱乐部的新名单。我想知道我们是否可以做到这一步。

回答

3

这不是很清楚你想要做什么,但是这个代码将采取的第一个五年固定装置,并返回一个元组列表,每个都包含一个家,相应的对象的客场价值:

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]] 
+0

感谢您的reply.Exactly我需要什么 – gizgok 2010-04-25 07:48:29

+0

@gizgok:如果这是你需要什么,不忘记接受答案(当网站给你一个机会时)。传播业力! – 2010-04-25 08:05:16

+0

@Max 我正在尝试这样做: clubs = [c.home,c.away in fixtures [:5]]它给出错误。 请原谅我对python的知识缺乏,但是如果可以的话,可以在一个stmt中再次完成这个工作如何使用 – gizgok 2010-04-25 10:13:29

0

不完全是你以后的答案,但(假设[(home1, away1), (home2, away2), ...])这是一样简单,你会得到。

homes = [h for h,a in fixtures] 
aways = [a for h,a in fixtures] 
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))) 
+0

Yup也做得很好 – gizgok 2010-04-25 07:49:24

相关问题