Что такое идиоматический эквивалент python для get () для списков? - PullRequest
4 голосов
/ 09 октября 2011

Вызов get (key) для словаря вернет None по умолчанию, если ключ отсутствует в словаре.Что такое идиоматический эквивалент для списка, такой, что если список по крайней мере имеет размер переданного в индексе элемента, возвращается элемент, в противном случае возвращается None?

Если перефразировать, что является более идиоматической / компактной версиейэтой функции:

def get(l, i):
    if i < len(l):
        return l[i]
    else:
        return None

Ответы [ 2 ]

7 голосов
/ 09 октября 2011

Ваша реализация - Стиль «Прежде чем прыгнуть» .Питонно выполнять код и ловить ошибки вместо:

def get(l, i, d=None):
    try:
        return l[i]
    except IndexError:
        return d
3 голосов
/ 09 октября 2011

Если вы ожидаете, что l[i] часто не существует, используйте:

def get(l,i):
    return l[i] if i<len(l) else None

Если вы ожидаете, что l[i] будет существовать почти всегда, используйте try...except:

def get(l,i):
    try:
        return l[i] 
    except IndexError:
        return None

Обоснование: try...except стоит дорого, когда возбуждается исключение, но довольно быстро в противном случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...