Python3.x at 0x0000000002731828>

问题描述:

>>> di

{'b': 'B', 'a': 'C'}

>>> print("%s--" % k for k in di.keys())

at 0x0000000002945360>


原因:语句 "%s--" % k for k in di.keys() 生成了一个迭代器( python generator object)对象,类似C++中的指针和iterator对象.

而 [("%s--" % k for k in di.keys())] 则创建了一个list对象,因此

>>>print(["%s--" % k for k in di.keys()])

就可以正常.


下边是转的关于generator和iterator的文章


Iterator是迭代器的意思,它的作用是一次产生一个数据项,直到没有为止。这样在 for 循环中就可以对它进行循环处理了。那么它与一般的序列类型(list, tuple等)有什么区别呢?它一次只返回一个数据项,占用更少的内存。但它需要记住当前的状态,以便返回下一数据项。它是一个有着next()方法的对象。而序列类型则保存了所有的数据项,它们的访问是通过索引进行的。

使用Iterator的好处除了节省内存外,还有一个好处就是可以把非线性化的处理转换成线性化的方式来进行处理。如对一棵树的访问,传统的方法可以使用递归函数来处理,下面是对树的一个中序遍历的示例:

你可能感兴趣的:(Python)