выбор Python определенные элементы из списка

Есть ли "pythonic" способ получить только определенные значения из списка, подобного этому коду жемчуга:

my ($one,$four,$ten) = line.split(/,/)[1,4,10]
27
задан ennuikiller 25 January 2010 в 18:21
поделиться

4 ответа

Я думаю, что вы ищете operator.itemgetter :

import operator
line=','.join(map(str,range(11)))
print(line)
# 0,1,2,3,4,5,6,7,8,9,10
alist=line.split(',')
print(alist)
# ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
one,four,ten=operator.itemgetter(1,4,10)(alist)
print(one,four,ten)
# ('1', '4', '10')
21
ответ дан 28 November 2019 в 04:44
поделиться
lst = line.split(',')
one, four, ten = lst[1], lst[4], lst[10]
8
ответ дан 28 November 2019 в 04:44
поделиться

Попробуйте Оператор. Itemgetter (Доступно в Python 2.4 или новее):

Вернуть Callable объект, который выбирает элемент из своего операнда, используя метод ____ PettiTem ____ (). Если указаны несколько элементов, возвращает кортеж значений поиска.

>>> from operator import itemgetter
>>> line = ','.join(map(str, range(11)))
>>> line
'0,1,2,3,4,5,6,7,8,9,10'
>>> a, b, c = itemgetter(1, 4, 10)(line.split(','))
>>> a, b, c
('1', '4', '10')

Конденсированные:

>>> # my ($one,$four,$ten) = line.split(/,/)[1,4,10]
>>> from operator import itemgetter
>>> (one, four, ten) = itemgetter(1, 4, 10)(line.split(','))
5
ответ дан 28 November 2019 в 04:44
поделиться

Да:

data = line.split(',')
one, four, ten = data[1], data[4], data[10]

Вы также можете использовать itemgetter, но я предпочитаю код выше, это более понятно, и Clarity == хороший код.

1
ответ дан 28 November 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: