Подсказки для отладки пониманий списка?

Понимания списка Python хороши, но почти невозможны отладить. У Вас парни есть какие-либо хорошие советы / инструменты для отладки их?

11
задан andylei 29 March 2010 в 03:38
поделиться

5 ответов

Если это достаточно сложно, чтобы это не было очевидно на первый взгляд, распакуйте его на несколько шагов и / или циклов for. Это явно слишком сложно, и сделать его более явным - самый простой способ отладить его. Дополнительный бонус: теперь вы можете перейти к отладчику или добавить операторы печати!

3
ответ дан 3 December 2019 в 06:46
поделиться

совет: используйте составление списков для простых задач (1 или 2 уровня). В противном случае для удобства чтения лучше сделать его явным.

1
ответ дан 3 December 2019 в 06:46
поделиться

Используйте отладчик, например pdb , чтобы просмотреть или разбить понимание списка на полный цикл for.

0
ответ дан 3 December 2019 в 06:46
поделиться

В Haskell я использую нечто похожее на:

def trcPV(prompt, value):
    print ("%s%s" % (prompt, str(value)))
    return value

xs = trcPV("xs=", [x for x in range(0,100) if trcPV("check=",(trcPV("x=",x) % 15) in [0,3,5])])
1
ответ дан 3 December 2019 в 06:46
поделиться

Понимание списка Haskell по крайней мере может быть (и это что делают компиляторы), переписанный в терминах map, concat и filter.

Итак, этот пример на Haskell:

[ x*x | x<-[1..25], even x]

Работает как:

map (\x-> x*x) (filter (even) [1..25])

Я ожидаю, что аналогичные идентичности сохранятся и для Python, поэтому аналогичная декомпозиция должна дать эквивалентный код и на Python. Эквивалентный код будет легче отлаживать (и работать так же эффективно).

0
ответ дан 3 December 2019 в 06:46
поделиться
Другие вопросы по тегам:

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