Python 这个代码段的含义是什么?
我试图在python中实现一个函数,它接收一个iterable输入并循环通过它来执行一些操作。我对如何处理不同的iterables感到困惑(例如:列表和字典不能以相同的常规方式循环),因此我查看了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差异(数据,
统计信息库,发现它们是这样处理这种情况的:-
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是可编辑的,但它本身不是一个迭代。