компактная запись в Python 3 - PullRequest
0 голосов
/ 18 марта 2020

Есть ли в Python 3 компактная версия записи следующего содержания:

print(columns[1],columns[8],columns[9])

Что-то вроде:

print (колонки [1,8,9])

Чтобы получить тот же результат.

Ответы [ 2 ]

3 голосов
/ 18 марта 2020

list.__getitem__ не поддерживает какой-либо синтаксис выбора, хотя вы можете использовать operator.itemgetter для достижения чего-то похожего:

from operator import itemgetter

print(itemgetter(1,8,9)(columns))

Тем не менее, класс может определить __getitem__ для поддержки чего-то подобного. Например,

import operator


class ProjectionList(list):
    def __getitem__(self, index):
        if isinstance(index, tuple):
            return operator.itemgetter(*index)(self)
        else:
            return super().__getitem__(index)

Тогда

>>> z = ProjectionList([1,2,3])
>>> z[0]
1
>>> z[0,2]
(1, 3)
1 голос
/ 18 марта 2020

Попробуйте это: -

from operator import itemgetter
print(*itemgetter(1, 8, 9)(columns))
...