Как нарезать список объектов в ассоциации атрибутов объекта - PullRequest
2 голосов
/ 25 апреля 2010

У меня есть список матчей. У каждого из них есть домашний клуб и атрибут выездного клуба. Я хочу нарезать список в ассоциации с его домашним клубом и выездным клубом. Нарезанный список должен состоять из предметов домашнего клуба и предметов для выездного клуба.

Более простой способ реализовать это - сначала нарезать список матчей. Затем составьте новый список соответствующих домашних клубов и клубов на выезде. Я хотел знать, сможем ли мы сделать это за один шаг.

Ответы [ 3 ]

3 голосов
/ 25 апреля 2010

Не очень понятно, что вы пытаетесь сделать, но этот код возьмет первые пять приборов и вернет список кортежей, каждый из которых содержит home и отсутствующее значение соответствующего объекта:

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 голосов
/ 25 апреля 2010

Конечно, с небольшим количеством работы:

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 голосов
/ 25 апреля 2010

Не совсем тот ответ, который вы получили, но (при условии [(home1, away1), (home2, away2), ...]) это примерно так же просто, как вы получите.

homes = [h for h,a in fixtures]
aways = [a for h,a in fixtures]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...