基本上,我希望此代码产生列表的元素0并更新列表,以便下次它将产生下一个元素。 相反,我得到这个错误:

"TypeError: 'NoneType' object has no attribute '__getitem__' "

import random

def deterministicNumber():
    return next(gener())

def gener():    
    listy = [10,12,14,16,18,20]
    while True:
        listy = listy[1:].append(listy[0])
        print listy
        yield listy[0]
    return 

#1楼 票数:3

listy = listy[1:].append(listy[0])

这行分配listy = None ,因为list.append方法在原地操作并返回None 然后在循环的下一个迭代中,您的TypeError是由于访问None[1:].append(None[0])

对于列表上的一键式迭代器,您可以简单地使用:

gener = iter([10,12,14,16,18,20])

#2楼 票数:2

看起来您想要一个迭代器,该迭代器在列表中反复循环。

您最好将itertools模块中的功能循环用于此任务:

>>> import itertools
>>> gener = itertools.cycle([10,12,14,16,18,20])
>>> def deterministicNumber(it):
        return next(it)
>>> for _ in range(10):
        print(deterministicNumber(gener))
10
12
14
16
18
20
10
12
14
16

#3楼 票数:0

无需更新列表。

def gener():    
    listy = [10,12,14,16,18,20]
    for item in listy:
        yield item

#4楼 票数:0

听起来您想永远返回数字。

def listy(array):
    i = 0
    while 1:
        yield array[i % len(array)]
        i += 1


for l in listy(['a', 'b', 'c']):
  print l

如果您只想执行此循环:

def listy(array):
    i = 0
    while i < len(array):
        yield array[i]
        i += 1

for l in listy(['d', 'e', 'f']):
  print l

  ask by Paca translate from so

未解决问题?本站智能推荐:

1回复

在scrapy中写一个蜘蛛,但为什么“产量项目”在嵌套的for循环中不起作用?

我在scrapy中有一个蜘蛛写作,但没有在for循环中执行yiled项目,请参阅下面的代码。 当我调用这个函数时,我在输出窗口中什么也没有,似乎yiled duilian_item行不起作用,它甚至阻止其他代码执行(它上面的打印行)。 当我注释掉最后一行yiled duilian_item ,一切正
1回复

转换列表中的产量

我有这个代码: 我想将 yield 转换为列表。 我该怎么做? 所以我只想不使用 yield 但例如my_list.append
1回复

将列表与产量合并

我的推理的缺陷在哪里? 根据我的理解,yield的工作原理类似于return语句,该语句返回到生成器以继续迭代。 我期望代码继续添加到列表中,但出现错误。 编辑:我最初的错误是由于当没有初始化值时尝试使用+ =连接finalList。 这是通过使用finalList.append()解
1回复

在列表上迭代(产量)

我正在尝试创建一个迭代列表并返回下一个元素的方法。 这是我的清单: [2, 5, 7, 10, 25, 30, 50, 70] 这就是我正在研究的方法: 当我调用方法并打印结果时 ,前两个打印是: <generator object Currency.iterDenomination
3回复

迭代列表(产量)[关闭]

关闭。 这个问题需要细节或清晰。 它目前不接受答案。 想改善这个问题吗? 通过编辑此帖子添加详细信息并澄清
3回复

yieldas赋值有什么作用?myVar=(产量)

由于这个问题,我熟悉 yield 返回值但是当 yield 位于作业的右侧时,它会做什么? 我在研究状态机和协程时,在本博客的代码示例中遇到了这个问题。
2回复

Python产量与Ruby产量

在Ruby中,yield关键字用于产生执行块的闭包。 这个关键字在Python语言中有何不同?
3回复

Python:产量和产量分配

这个代码,包括赋值和yield运算符,如何工作? 结果相当混乱。 输出: