我是一名有用的助手,可以为您翻译文本。
我让它工作的方法是:
我希望它能返回拼接好的列表,但当我点击运行时,它显示:“程序中有一个错误 * 生成器内部的带参数'return'。”
我真的很困惑……
我正在尝试在Python中生成滑动窗口函数。我已经知道如何实现,但不是全部都在函数内部。itertools、yield和iter()对我来说完全是新的。
我想要输入
a='abcdefg'
b=window(a,3)
print b
['abc','bcd','cde','def','efg']
我让它工作的方法是:
def window(fseq, window_size=5):
import itertools
tentative=[]
final=[]
iteration=iter(fseq)
value=tuple(itertools.islice(iteration,window_size))
if len(value) == window_size:
yield value
for element in iteration:
value = value[1:] + (element,)
yield value
a='abcdefg'
result=window(a)
list1=[]
for k in result:
list1.append(k)
list2=[]
for j in list1:
tentative=''.join(j)
list2.append(tentative)
print list2
我困惑的是如何在函数内部使用函数的最终值?
以下是我的函数代码:
def window(fseq, window_size=5):
import itertools
tentative=[]
final=[]
iteration=iter(fseq)
value=tuple(itertools.islice(iteration,window_size))
if len(value) == window_size:
yield value
for element in iteration:
value = value[1:] + (element,)
yield value
for k in value:
tentative.append(k)
for j in tentative:
tentative_string=''.join(j)
final.append(tentative_string)
return final
seq='abcdefg'
uence=window(seq)
print uence
我希望它能返回拼接好的列表,但当我点击运行时,它显示:“程序中有一个错误 * 生成器内部的带参数'return'。”
我真的很困惑……