2012-10-11 49 views
2

我對Python非常陌生。如何測試變量是否變化? Python

粗略我要做到以下幾點:

var=0 
while x doesn't change 
    return var 

    if x changes 
     var = var + 1 

這應再繼續進行,直到所有的x值進行處理。我沒有x值列表。

任何建議如何從我的想法到代碼?

我在Arcmap的現場計算器中工作。

+0

詳細說明。顯示「x」是什麼。 – ddinchev

回答

0
y = x 
while x == y: 
    # your code that might change x 
+0

ofc它首先取決於「變化」是什麼意思 - 如果它是一個數組中的新成員,這是行不通的。 –

+0

好吧,它是一個表中的列。只要該屬性是常量,我想添加到另一列的值爲1.如果列值發生變化,我想將其他列添加到值2.等等...... – ustroetz

+0

請定義「表」。 – Matthias

0
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的實例的實例。生成器函數使用它來檢測初始「舊」對象與迭代的第一個元素的不等式。

+0

@ user1738154已更新。 – glglgl

+0

謝謝你的代碼!不過,我只返回NULL值。代碼雖然工作。什麼會造成這種情況? – ustroetz

+0

感謝您的詳細解釋。然而,我只獲得NULL值作爲結果。任何更多的想法。我真的不太瞭解python。 – ustroetz