Найти - Пользователи
Полная версия: Простой вопрос по синтаксису, квадратные скобки
Начало » Python для новичков » Простой вопрос по синтаксису, квадратные скобки
1 2 3
odnochlen
py.user.next
для len() нужен список

>>> len(xrange(6))
6
>>> len(x for x in xrange(6))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'generator' has no len()
Странно. А посчитать количество элементов, не сохраняя все в список, можно?
EBFE
>>> type(xrange(5))
<type 'xrange'>
>>> type(x for x in xrange(5))
<type 'generator'>
odnochlen
А посчитать количество элементов, не сохраняя все в список, можно?
sum(1 for x in xrange(5))

Только зачем тогда использовать генератор?
http://docs.python.org/glossary.html#term-generator
generator
A function which returns an iterator.

Each yield temporarily suspends processing, remembering the location execution state (including local variables and pending try-statements). When the generator resumes, it picks-up where it left-off (in contrast to functions which start fresh on every invocation).
py.user.next
>>> matr = [[1, -1, 2, -2, 3], [1, -1, 2, -2, -3]]
>>> sum(i < 0 for i in sum(matr, []))
5
>>>

odnochlen
>>> len(xrange(6))
6
>>>
xrange() возвращает “xrange object”

в третьем питоне для типа range поддерживаются также и срезы
>>> range(1, 10)[2:5]
range(3, 6)
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB