我对python很陌生。
大致我想做以下事情:
var=0
while x doesn't change
return var
if x changes
var = var + 1
这将继续进行,直到处理完所有 x 值。我没有 x 值的列表。
任何建议如何从我的想法中获取代码?
我在 Arcmap 的字段计算器中工作。
y = x
while x == y:
# your code that might change x
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
。生成器函数使用它来检测初始“旧”对象与可迭代对象的第一个元素的不等式。