Python: Лучший способ использовать понимание списка? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь использовать списочное понимание в python 2.7, чтобы лучше достичь того, что у меня сейчас:

params['item1'] = request.GET.get('item1', '')
params['item2'] = request.GET.get('item2', '')
params['item3'] = request.GET.get('item3', '')
params['item4'] = request.GET.get('item4', '')
params['item5'] = request.GET.get('item5', '')

params['items'] = [
    params['item1'].encode('utf-8'),
    params['item2'].encode('utf-8'),
    params['item3'].encode('utf-8'),
    params['item4'].encode('utf-8'),
    params['item5'].encode('utf-8')
]

Мне интересно, будет ли лучше работать цикл и списочное понимание (как показано ниже) НоМне также интересно, есть ли лучшие способы сделать это.

params['items'] = []

for x in range(5):
    item = 'item' + str(x+1)
    params[item] = request.GET.get(item, '')
    params['items'].extend(params[item].encode('utf-8'))

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Если предположить, что params начинается пусто, я бы разбил это на словарь и список.Я бы также изменил диапазон вместо добавления по одному к каждому индексу:

 params={'item' + str(x):request.GET.get('item' + str(x), '') for i in range(1,6)}`
 params['items']=[item.encode('utf-8') for item in params.keys()]

Еще кое-что нужно учитывать, если request.GET создает внешний вызов каждый раз, когда вы получаете к нему доступ.Если это так, вы должны создать одну локальную копию и получить к ней доступ, например,

local_copy = request.GET.copy()
params={'item' + str(x):local_copy.get('item' + str(x), '') for i in range(1,6)}`
0 голосов
/ 27 сентября 2018

Да, понимание списка будет обрабатывать это аккуратно:

params["items" = [request.GET.get('item'+str(i), '').encode('utf-8')
                      for i in range(1,6) ]

"лучше" - это оценочное суждение, которое выходит за рамки переполнения стека.Понимание списка проще для чтения и поддержки, чем ваш первоначальный цикл?Это зависит от вас и вашей команды по программированию / использованию.

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