Синтаксическая ошибка для команды [duplicate]

. Лучшим подходом для такого примера будет понимание списка

somelist = [tup for tup in somelist if determine(tup)]

. В тех случаях, когда вы делаете что-то более сложное, чем вызов функции determine Я предпочитаю создавать новый список и просто добавлять к нему, когда я иду. Например

newlist = []
for tup in somelist:
    # lots of code here, possibly setting things up for calling determine
    if determine(tup):
        newlist.append(tup)
somelist = newlist

Копирование списка с помощью remove может сделать ваш код немного чище, как описано в одном из ответов ниже. Вы должны определенно не делать этого для чрезвычайно больших списков, поскольку это включает в себя первое копирование всего списка, а также выполнение операции O(n) remove для каждого удаляемого элемента, что делает этот алгоритм O(n^2).

for tup in somelist[:]:
    # lots of code here, possibly setting things up for calling determine
    if determine(tup):
        newlist.append(tup)

52
задан eggyal 7 May 2014 в 11:32
поделиться

6 ответов

96
ответ дан 2 revs, 2 users 99% 25 August 2018 в 02:16
поделиться
0
ответ дан Andrew 25 August 2018 в 02:16
поделиться
0
ответ дан Horcrux7 25 August 2018 в 02:16
поделиться
0
ответ дан Hussnain sheikh 25 August 2018 в 02:16
поделиться
0
ответ дан Umair Malhi 25 August 2018 в 02:16
поделиться
0
ответ дан user5493732 25 August 2018 в 02:16
поделиться
Другие вопросы по тегам:

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