Python, работа со списками

1

У меня есть такой список кортежей:

lst = [(10, u'1.15', u'1.15'), (5, 0, u'1.875'), (3, u'2.28', u'2.28')]

и я хочу получить новый с только вторым и третьим элементом каждого кортежа, который не равен 0, другими словами, мне нужно что-то вроде:

new_lst = [u'1.15', u'1.15',u'1.875', u'2.28', u'2.28']

Спасибо за ваши ответы.

Теги:
list
tuples

3 ответа

4
Лучший ответ
new_lst = [x for t in lst for x in t[1:] if x != 0]
2
>>> [x for y in lst for x in y[1:3] if x]
[u'1.15', u'1.15', u'1.875', u'2.28', u'2.28']
0
>>> L = [(10, u'1.15', u'1.15'), (5, 0, u'1.875'), (3, u'2.28', u'2.28')]
>>> answer = []
>>> for tup in L:
...     answer.extend([i for i in tup[1:] if i])
...     
>>> answer
[u'1.15', u'1.15', u'1.875', u'2.28', u'2.28']

Надеюсь это поможет

  • 1
    Странно - похоже, вы набрали его в интерактивном интерпретаторе, но, очевидно, этого не сделали, поскольку результат неверный. Мне очень любопытно, как это произошло :)
  • 0
    Это именно то, что дает мне переводчик. Как вы думаете, что это неправильно?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню