Почему я получаю FormatException при преобразовании строки в число с плавающей точкой?

http://docs.python.org/reference/expressions.html#generator-expressions

Переменные, используемые в выражении генератора, оцениваются лениво, когда Метод __next__() вызывается для объекта генератора (таким же образом, как и обычные генераторы). Тем не менее, крайнее левое предложение немедленно оценивается, так что полученная им ошибка может быть видна перед любой другой возможной ошибкой в ​​коде, который обрабатывает выражение генератора. Последующие предложения не могут быть сразу оценены, так как они могут зависеть от предыдущего цикла цикла.

blockquote>

S[i:j+1] оценивается при выполнении генератора и в этой точке S имеет последнее значение .

Вместо этого вы можете использовать обычный генератор. Теперь ss является локальным для subgen:

import itertools

def subgen(ss):
    l=len(ss)
    for i in xrange(l):
        for j in xrange(i,l):
            yield ss[i:j+1]

subs=[]
for i in xrange(int(raw_input())):
    S=raw_input()
    subs.append(subgen(S))

13
задан mskfisher 5 June 2012 в 16:05
поделиться