Python 为什么我的代码会产生死循环,这是关于';国际热核实验堆(c,a)和#x27;
我怎样才能得到它。您没有调用c() 你的问题很神秘。我不知道你期望什么 请编辑该问题,并添加有关您认为可以做什么以及您观察到了什么的信息。您没有调用c() 你的问题很神秘。我不知道你期望什么Python 为什么我的代码会产生死循环,这是关于';国际热核实验堆(c,a)和#x27;,python,Python,我怎样才能得到它。您没有调用c() 你的问题很神秘。我不知道你期望什么 请编辑该问题,并添加有关您认为可以做什么以及您观察到了什么的信息。您没有调用c() 你的问题很神秘。我不知道你期望什么 请编辑该问题,并添加有关您认为可以执行的操作以及您观察到的操作的信息。您需要为您的iter()调用提供函数(该函数将返回下一个值)。在您的例子中,这是c()。下一步而不是c 下面的代码段通过生成所有生成的值(不包括终止值)按预期工作 def c(): yield 222 yield 333
请编辑该问题,并添加有关您认为可以执行的操作以及您观察到的操作的信息。您需要为您的
iter()调用提供函数(该函数将返回下一个值)。在您的例子中,这是c()。下一步
而不是c
下面的代码段通过生成所有生成的值(不包括终止值)按预期工作
def c():
yield 222
yield 333
a=[1,2,3,4]
b=iter(c,333)
print a,b
for i in b:
print i
其输出为:
def generator():
yield 1
yield 2
yield 3
yield -1
sequence = iter (generator().next, -1)
print sequence
for value in sequence:
print value
pax>pythonProg1.py
1.
2.
3.
帕克斯>_
您需要为您的iter()
调用提供函数(它将返回下一个值)。在您的例子中,这是c()。下一步
而不是c
下面的代码段通过生成所有生成的值(不包括终止值)按预期工作
def c():
yield 222
yield 333
a=[1,2,3,4]
b=iter(c,333)
print a,b
for i in b:
print i
其输出为:
def generator():
yield 1
yield 2
yield 3
yield -1
sequence = iter (generator().next, -1)
print sequence
for value in sequence:
print value
pax>pythonProg1.py
1.
2.
3.
帕克斯>_
国际热核实验堆(iter)接收一个可呼叫设备和一个哨兵,并反复呼叫可呼叫设备。反复调用c会创建新的生成器,这不是您想要的。要调用c一次,然后重复调用下一个函数,请尝试以下方法:
pax> python prog1.py
<callable-iterator object at 0xb77dd6ac>
1
2
3
pax> _
输出:
def c():
yield 222
yield 333
a=[1,2,3,4]
b=iter(c().next, 333)
print a,b
for i in b:
print i
国际热核实验堆(iter)接收一个可呼叫设备和一个哨兵,并反复呼叫可呼叫设备。反复调用c会创建新的生成器,这不是您想要的。要调用c一次,然后重复调用下一个函数,请尝试以下方法:
pax> python prog1.py
<callable-iterator object at 0xb77dd6ac>
1
2
3
pax> _
输出:
def c():
yield 222
yield 333
a=[1,2,3,4]
b=iter(c().next, 333)
print a,b
for i in b:
print i
因为c
从不返回333
在iter
中使用sentinel时,第一个参数必须是可调用的,iter
将生成第一个参数的返回值,直到该值等于sentinel
您想做的应该是:
222
因为c
从不返回333
在iter
中使用sentinel时,第一个参数必须是可调用的,iter
将生成第一个参数的返回值,直到该值等于sentinel
您想做的应该是:
222
“晦涩”对“文盲”来说太委婉了。OP试过了,但我得说英语不是母语。“文盲”有点苛刻。“文盲”对“文盲”来说太委婉了。OP试过了,但我得说英语不是母语。“文盲”有点harsh@zjm1126,我想你在找第二种变体。修改答案使之更清楚。@zjm1126,我想您是在寻找第二个变体。修改答案以澄清这一点。不要反对@paxdiablo;这是第一个正确的答案。@Adam Bernier:出于兴趣-你怎么知道哪个答案是第一个?我所看到的都是“1小时前答复”。我知道确切的时间戳明天会出现,但我现在怎么知道呢。(附言:我已经知道我是第一个,我只是好奇你会如何调查它。)嗯。。。我只是按“最新”排序,我的排在paxdiablo之前。我想这就是找到答案的方法。但安德里亚·安布走在我前面,尽管他的答案不如我的完整,他后来编辑了它。我不知道如何判断他是在我提交我的答案之前还是之后编辑了他的答案。为什么不直接打印时间戳@马克·拜尔斯:是的,现在,将鼠标悬停在相对时间上。在这种情况下,我当然也考虑了@paxdiablo编辑他的答案的时间。@Adam:啊,谢谢。这是一个极好的提示(关于鼠标悬停)!我没有注意到这一点。对@paxdiablo;这是第一个正确的答案。@Adam Bernier:出于兴趣-你怎么知道哪个答案是第一个?我所看到的都是“1小时前答复”。我知道确切的时间戳明天会出现,但我现在怎么知道呢。(附言:我已经知道我是第一个,我只是好奇你会如何调查它。)嗯。。。我只是按“最新”排序,我的排在paxdiablo之前。我想这就是找到答案的方法。但安德里亚·安布走在我前面,尽管他的答案不如我的完整,他后来编辑了它。我不知道如何判断他是在我提交我的答案之前还是之后编辑了他的答案。为什么不直接打印时间戳@马克·拜尔斯:是的,现在,将鼠标悬停在相对时间上。在这种情况下,我当然也考虑了@paxdiablo编辑他的答案的时间。@Adam:啊,谢谢。这是一个极好的提示(关于鼠标悬停)!我没有注意到。