Используйте понимание списка (LC), когда это уместно.
Например, если вы передаете любую итерируемую функцию, выражение генератора (genexpr) часто более уместно, а LC бесполезно:
"".join([str(n) for n in xrange(10)])
# becomes
"".join(str(n) for n in xrange(10))
Или, если вам не нужен полный список, цикл for с выражением break будет вашим выбором. Модуль itertools также имеет инструменты, такие как takewhile.