Python中关于列表解析的问题请教

class Iters:
def init(self, value):
self.data = value


def iter(self):
print(‘iter=>’, end=’’)
self.ix = 0
return self

def next(self):
print( ‘next:’, end=’ ')
if self.ix== len(self.data): raise StopIteration
item = self.data[self.ix]
self.ix += 1
return item



X = Iters([1, 2, 3, 4, 5])

print([i ** 2 for i in X])

上面代码输出如下:
iter=>next: next: next: next: next: next: [1, 4, 9, 16, 25]

我的问题是,为何输出是连着 6 个“ next: ”然后才是列表,而不是形如“ next: 1 ”这种在“ next: ”后紧跟数字的方式?
谢谢
Python中关于列表解析的问题请教


4 回复

你这 6 个 next:是在构建迭代器的时候输出的,然后最后输出的是[1, 4, 9, 16, 25]


我无法理解你的问题

python<br>class Iters: <br> def __init__(self, value): <br> self.data = value<br><br> def __iter__(self): <br> print('iter=&gt;', end='') <br> self.ix = 0 <br> return self <br><br> def __next__(self): <br> print( 'next:', end=' ') <br> if self.ix== len(self.data): raise StopIteration <br> item = self.data[self.ix] <br> self.ix += 1 <br> return item<br><br><br>X = Iters([1, 2, 3, 4, 5]) <br>heihei = ([i ** 2 for i in X]) <br><br>print ('\n====================')<br><br>print (heihei)<br><br>

[symons@symons_laptop symons]$ python haha.py
iter=>next: next: next: next: next: next:
====================
[1, 4, 9, 16, 25]

看这个代码和运行结果就知道啦

因为你只在__next__里 print 了’next:’,没有 print self.data[self.ix]啊。。。

回到顶部