gpt4 book ai didi

Python控制台不显示函数的输出

转载 作者:行者123 更新时间:2023-12-01 09:06:14 28 4
gpt4 key购买 nike

a=b=range(3)
In[1] = zip(a,b)

我希望看到这样的东西:

out[1] = 
[(0 0),
(1 1),
(2 2)]

但是,我得到的输出是:

 out[1] = <zip at 0x26da8d2e9c8>

其他功能也是如此,例如

range(20)

out = range(0,20))

对于这些函数来说这不是问题,因为我知道它们是如何工作的。但这使得使用函数和理解它们如何工作变得困难,因为你永远看不到输出。

有人可以向我解释一下为什么这个控制台会这样工作以及如何更改它吗?

最佳答案

将它们转换为列表:

>>> list(zip(a,b))
[(0, 0), (1, 1), (2, 2)]
<小时/>

您需要这样做的原因是因为zip()返回一个迭代器(您可以调用next())并且range() 返回一个iterable(您可以对其调用iter())。两者在需要之前都不会被评估(从这个意义上说,它们是“惰性的”),因此它们在分配给变量时不会显示所有内容。

但是,当您将它们转换为列表时,它们会被迭代和评估,以便您可以看到它们的内容。

<小时/>

当您创建自己的迭代器或迭代器时也是如此:

class my_iterator():
def __init__(self):
self.x = 0
def __iter__(self):
return self
def __next__(self):
self.x += 1
if self.x < 10: return self.x
raise StopIteration

然后以与 zip 实例非常相似的方式执行:

>>> i
<__main__.my_iterator object at 0x7f219d303518>
>>> list(i)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

关于Python控制台不显示函数的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52025596/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com