我试图在python中实现一个函数,该函数接受可迭代的输入,并通过循环来执行某些操作。我对如何处理不同的可迭代性感到困惑(例如:列表和字典不能以相同的一般方式循环),所以我在python中查看了statistics库,发现它们处理这种情况如下:-
def variance(data, xbar=None):
if iter(data) is data: #<-----1
data = list(data)
...然后,他们将data作为列表到处处理。
所以,我的问题是:
发布于 2020-03-30 06:31:12
iter(something)返回返回something元素的迭代器对象。如果something已经是一个迭代器,那么它将不加修改地返回它。所以
if iter(data) is data:是一种判断data是否是迭代器对象的方法。如果是,则将其转换为所有元素的列表。
之所以这样做,是因为后面的代码需要一个真正的元素列表。有些事情是不能用迭代器处理的,比如访问特定的元素、插入/删除元素,并多次遍历它。迭代器只能按顺序处理。
https://stackoverflow.com/questions/60925094
复制相似问题