Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这个代码段的含义是什么?_Python_Statistics_Iterator - Fatal编程技术网

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

Python 这个代码段的含义是什么?,python,statistics,iterator,Python,Statistics,Iterator,我试图在python中实现一个函数,它接收一个iterable输入并循环通过它来执行一些操作。我对如何处理不同的iterables感到困惑(例如:列表和字典不能以相同的常规方式循环),因此我查看了python中的统计信息库,发现它们是这样处理这种情况的:- def variance(data, xbar=None): if iter(data) is data: #<-----1 data = list(data) ... def差异(数据,

我试图在python中实现一个函数,它接收一个iterable输入并循环通过它来执行一些操作。我对如何处理不同的iterables感到困惑(例如:列表和字典不能以相同的常规方式循环),因此我查看了python中的
统计信息
库,发现它们是这样处理这种情况的:-

def variance(data, xbar=None):
    if iter(data) is data:        #<-----1
        data = list(data)
    ...
def差异(数据,xbar=None):
如果iter(data)是data:#
iter(something)
返回一个迭代器对象,该对象返回
something
的元素。如果
something
已经是一个迭代器,那么它只返回未更改的迭代器。所以

if iter(data) is data:
是一种判断
数据
是否为迭代器对象的方法。如果是,则将其转换为所有元素的列表

这样做是因为之后的代码需要一个真正的元素列表。对于列表,您可以做一些迭代器无法做的事情,例如访问特定元素、插入/删除元素以及多次循环。迭代器只能按顺序处理。

iter(something)
返回迭代器对象,该对象返回
something
的元素。如果
something
已经是一个迭代器,那么它只返回未更改的迭代器。所以

if iter(data) is data:
是一种判断
数据
是否为迭代器对象的方法。如果是,则将其转换为所有元素的列表


这样做是因为之后的代码需要一个真正的元素列表。对于列表,您可以做一些迭代器无法做的事情,例如访问特定元素、插入/删除元素以及多次循环。迭代器只能按顺序处理。

Ok,但当我写入
d={0:1,1:2,3:4}
时,如果iter(d)是d,则
返回false。字典不可iterable吗?我认为dict是可iterable的,但它本身不是迭代。好吧,但当我写
d={0:1,1:2,3:4}
时,如果iter(d)是d
返回false。字典是不可编辑的吗?我认为dict是可编辑的,但它本身不是一个迭代。