首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个代码段的含义是什么?

问这个代码段的含义是什么?
EN

Stack Overflow用户
提问于 2020-03-30 06:24:06
回答 1查看 185关注 0票数 1

我试图在python中实现一个函数,该函数接受可迭代的输入,并通过循环来执行某些操作。我对如何处理不同的可迭代性感到困惑(例如:列表和字典不能以相同的一般方式循环),所以我在python中查看了statistics库,发现它们处理这种情况如下:-

代码语言:javascript
复制
def variance(data, xbar=None):
    if iter(data) is data:        #<-----1
        data = list(data)
    ...

然后,他们将data作为列表到处处理。

所以,我的问题是:

  • (1)的含义是什么;
  • 是正确的方法,因为每次从数据中生成新的列表时都是这样。他们不能简单地使用迭代器循环数据吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-30 06:31:12

iter(something)返回返回something元素的迭代器对象。如果something已经是一个迭代器,那么它将不加修改地返回它。所以

代码语言:javascript
复制
if iter(data) is data:

是一种判断data是否是迭代器对象的方法。如果是,则将其转换为所有元素的列表。

之所以这样做,是因为后面的代码需要一个真正的元素列表。有些事情是不能用迭代器处理的,比如访问特定的元素、插入/删除元素,并多次遍历它。迭代器只能按顺序处理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60925094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档