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' with argument inside generator」と表示されます
私は本当に混乱しています。. .