2010-04-25 179 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

相關問題