больше, чем одно выражение в понимании списка? - PullRequest
2 голосов
/ 19 декабря 2011

Я хочу использовать понимание списка для разделения элементов списка.

line = [x.split(", ") for x in lineList]

В то же время я хотел бы удалить хвостовые и начальные символы элементов (.rstrip('"')/.lstrip('"').

Но у объекта списка нет атрибута «полоса».Есть ли способ достичь этого в понимании или я должен пойти на цикл?

Заранее спасибо за любой совет, Ларс

Ответы [ 3 ]

4 голосов
/ 19 декабря 2011

Попробуйте что-то вроде этого:

line = [[y.rstrip('"') for y in x.split(", ")] for x in lineList]

с двумя списками внутри.

3 голосов
/ 19 декабря 2011

Если вы хотите удалить как ведущие, так и конечные кавычки, почему бы не использовать strip() напрямую?Также, если вы хотите сгладить список списков:

line = sum([[y.strip('"') for y in x.split(", ")] for x in lineList], [])
1 голос
/ 19 декабря 2011

Лично мне сложнее понять понимание вложенного списка. Почему бы не передать эту работу другой функции? Возможно, это заслуживает лучшего названия, но:

def groom_line(l):
    return [elem.strip('"') for elem in l.split(",")]

и в вашем приложении

return [groom_line(l) for l in linelist]
...