<p>是的,itertools中的函数是为迭代器设计的。函数签名之所以说<code>iterable</code>,是因为它们还处理列表、元组和其他不是迭代器的iterable。在</p>
<hr/>
<p><a href="http://docs.python.org/glossary.html" rel="nofollow">A sequence</a>是一个iterable,它支持通过<code>__getitem__()</code>特殊方法使用整数索引进行有效的元素访问,并定义返回序列长度的<code>len()</code>方法。在</p>
<p>这个定义与不是迭代器的所有iterable的集合稍有不同。(您可以定义一个(残废的)自定义类,它有一个<code>__getitem__</code>,但没有<code>__len__</code>。它将是一个iterable,它不是迭代器,但也不是<code>sequence</code>。)</p>
<p>但是<code>sequences</code>非常接近您要查找的内容,因为所有序列都是可重复多次的iterable。在</p>
<p>内置到Python中的<a href="http://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange" rel="nofollow">sequence types</a>示例包括<code>str</code>、<code>unicode</code>、<code>list</code>、<code>tuple</code>、<code>bytearray</code>、<code>buffer</code>和{<cd14>}。在</p>
<hr/>
<p>以下是从<a href="http://docs.python.org/glossary.html" rel="nofollow">glossary</a>中挑选的一些定义:</p>
<pre><code>container
Has a __contains__ method
generator
A function which returns an iterator.
iterable
An object with an __iter__() or __getitem__() method. Examples of
iterables include all sequence types (such as list, str, and
tuple) and some non-sequence types like dict and file. When an
iterable object is passed as an argument to the builtin function
iter(), it returns an iterator for the object. This iterator is
good for one pass over the set of values.
iterator
An iterable which has a next() method. Iterators are required to
have an __iter__() method that returns the iterator object
itself. An iterator is good for one pass over the set of values.
sequence
An iterable which supports efficient element access using integer
indices via the __getitem__() special method and defines a len()
method that returns the length of the sequence. Note that dict
also supports __getitem__() and __len__(), but is considered a
mapping rather than a sequence because the lookups use arbitrary
immutable keys rather than integers. sequences are orderable
iterables.
deque is a sequence, but collections.Sequence does not recognize
deque as a sequence.
>>> isinstance(collections.deque(), collections.Sequence)
False
</code></pre>