私はPythonにまったく慣れていません。
大まかに私は次のことをしたいです:
var=0
while x doesn't change
return var
if x changes
var = var + 1
その後、これはすべてのx値が処理されるまで継続されます。x値のリストがありません。
私のアイデアからコードに移行する方法について何か提案はありますか?
私はArcmapのフィールド計算機で働いています。
def edgedetector(it):
var = 0
old_i = object() # guaranteed to be different from everything else
for i in it:
if i != old_i:
var += 1
old_i = i
yield var
このジェネレーター機能を使用して、次のことを行います。
it
あなたが興味のある価値観を持っている反復可能性を持っていると仮定すると、あなたは
import itertools
it_a, it_b = itertools.tee(it) # split it up
for items, val in itertools.izip(it_a, edgedetector(it_b)):
#do whatever you want to do with it
別:
def edgedetector(it):
var = 0
old_i = object() # guaranteed to be different from everything else
for i in it:
if i != old_i:
var += 1
old_i = i
yield i, var # this is changed...
それを簡単にします:
for items, val in edgedetector(it):
#do whatever you want to do with it
object()
クラスのインスタンスのインスタンス化ですobject
。ジェネレーター関数は、これを使用して、最初の「古い」オブジェクトとiterableの最初の要素との不等式を検出します。
y = x
while x == y:
# your code that might change x