以iterable作为参数的函数是否总是接受迭代器?

colinfang

我知道iteratoriterable,但是只有1次通过。

例如,许多函数都itertools采用iterable作为参数,例如isliceiterator如果我看到api说的话,可以一直通过iterable吗?

正如@delnan指出的那样:

尽管每个人iterator都是一个人iterable,但某些人(核心团队之外)说“可迭代”时表示“可以迭代多次且结果相同”。一些狂野的代码声称可以使用,iterables但实际上不起作用iterators

这正是我的关注。iterable支持多通的人有名字吗?IEnumerable在C#中一样?

如果我要构建一个声称要支持的功能iterable,那么实际上也是最好的做法iterator吗?

忘了它

是的,itertools中的函数设计用于迭代器。函数签名之所以说iterable是因为它们还可以用于列表,元组和不是迭代器的其他可迭代对象。


序列是可迭代的,它支持通过__getitem__()特殊方法使用整数索引进行有效的元素访问,并定义了len()一种返回序列长度的方法。

此定义与不是迭代器的所有可迭代对象的集合略有不同。(您可以定义一个(残缺的)自定义类,该类具有一个__getitem__,方法,但没有一个__len__。这将是一个迭代器,它不是一个迭代器-也不是一个sequence。)

但是sequences,由于所有序列都是可迭代的,因此可以多次迭代,因此与您要查找的内容非常接近。

实例序列类型内建在Python中包括strunicodelisttuplebytearraybufferxrange


以下是词汇表中的一些定义

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

解析器是否总是将参数作为列表?

来自分类Dev

是否可以将* this作为接受引用(&)的函数的参数传递?

来自分类Dev

接受迭代器的函数文档

来自分类Dev

使用迭代器模板类作为函数的参数

来自分类Dev

带有迭代器作为参数的C ++成员函数

来自分类Dev

类型不匹配且特征迭代器作为函数参数

来自分类Dev

接受任何函数(但仅函数)作为参数

来自分类Dev

函数接受函数作为模板类型的参数

来自分类Dev

如何接受异步函数作为参数?

来自分类Dev

是否可以在SQL Server 2000中编写将输入参数作为表接受的函数?

来自分类Dev

Lambda将迭代器作为参数

来自分类Dev

使用迭代器作为参数为lambda函数创建打包任务

来自分类Dev

使用 std::vector<Particle> 粒子;函数 .at() 不使用迭代器将其作为 for 循环内的参数

来自分类Dev

装饰器,允许函数接受任意参数

来自分类Dev

TypeScript推断接受函数作为参数的函数的返回类型

来自分类Dev

使用dict作为函数的输入,但仅接受函数需要的参数

来自分类Dev

接受lambda函数和函数指针作为参数

来自分类Dev

如何使构造函数接受所有类型的迭代器?

来自分类Dev

接受迭代器并返回字符串的函数

来自分类Dev

使用参数Java调用迭代器函数

来自分类Dev

jQuery .fail()方法是否接受回调作为参数?

来自分类Dev

接受分解后的对象作为箭头函数的唯一参数

来自分类Dev

静态成员函数不接受作为constexpr参数

来自分类Dev

接受lambda作为函数参数并提取返回类型

来自分类Dev

Swift的pow()函数不会接受Doubles作为参数

来自分类Dev

接受所有类型作为函数中的参数

来自分类Dev

如何使Rust函数接受任何浮动类型作为参数

来自分类Dev

编写仅接受文字“ 0”或文字“ 1”作为参数的函数

来自分类Dev

接受lambda作为函数参数并提取返回类型

Related 相关文章

  1. 1

    解析器是否总是将参数作为列表?

  2. 2

    是否可以将* this作为接受引用(&)的函数的参数传递?

  3. 3

    接受迭代器的函数文档

  4. 4

    使用迭代器模板类作为函数的参数

  5. 5

    带有迭代器作为参数的C ++成员函数

  6. 6

    类型不匹配且特征迭代器作为函数参数

  7. 7

    接受任何函数(但仅函数)作为参数

  8. 8

    函数接受函数作为模板类型的参数

  9. 9

    如何接受异步函数作为参数?

  10. 10

    是否可以在SQL Server 2000中编写将输入参数作为表接受的函数?

  11. 11

    Lambda将迭代器作为参数

  12. 12

    使用迭代器作为参数为lambda函数创建打包任务

  13. 13

    使用 std::vector<Particle> 粒子;函数 .at() 不使用迭代器将其作为 for 循环内的参数

  14. 14

    装饰器,允许函数接受任意参数

  15. 15

    TypeScript推断接受函数作为参数的函数的返回类型

  16. 16

    使用dict作为函数的输入,但仅接受函数需要的参数

  17. 17

    接受lambda函数和函数指针作为参数

  18. 18

    如何使构造函数接受所有类型的迭代器?

  19. 19

    接受迭代器并返回字符串的函数

  20. 20

    使用参数Java调用迭代器函数

  21. 21

    jQuery .fail()方法是否接受回调作为参数?

  22. 22

    接受分解后的对象作为箭头函数的唯一参数

  23. 23

    静态成员函数不接受作为constexpr参数

  24. 24

    接受lambda作为函数参数并提取返回类型

  25. 25

    Swift的pow()函数不会接受Doubles作为参数

  26. 26

    接受所有类型作为函数中的参数

  27. 27

    如何使Rust函数接受任何浮动类型作为参数

  28. 28

    编写仅接受文字“ 0”或文字“ 1”作为参数的函数

  29. 29

    接受lambda作为函数参数并提取返回类型

热门标签

归档