我試圖從名爲DEV_TYPE的字段中訪問表中的某些記錄進行遊標搜索。我想每個記錄比較反對知道值我剛纔在我的腳本內置的列表:在Python中使用'不是'
(devcatList)
我想打印出來沒有在列表中出現的任何值。記錄中的某些值也是Null。我想將我的if語句設置爲僅打印列表中未出現的值,但我也不想爲Null值打印出'None'。我的腳本如下:
if field.name == "DEV_TYPE":
for iRow in arcpy.SearchCursor(fc):
if not iRow.DEV_TYPE is None or iRow.DEV_TYPE not in devcatList:
print str(iRow.OBJECTID) + " - " + str(iRow.DEV_TYPE)
我受夠了「if not x is None
」玩耍了以「if x is not None
」。將'or
'更改爲'and
'(儘管它與直覺相反),但是我的打印輸出或者返回所有值或者沒有值,或者僅'None
'....基本上我不想要的所有東西。我確定我在做一些愚蠢的事情。有人能指出我的愚蠢是什麼嗎?
謝謝, 邁克
我想你想'如果iRow.DEV_TYPE不無和iRow.DEV_TYPE不devcatList:' –
見,我知道我在做一些愚蠢的...我想我已經嘗試過。我再次從挫折中測試,它的工作原理。我一定錯過了。保羅,如果你提交這個答案,我會接受。謝謝, – Mike
因爲你更關心包含排除測試('is'和'不''),我想你可能要考慮使用一個集合而不是一個列表。你可以用'devcatSet = set(devcatList)'輕鬆創建。這將提供O(1)性能而不是O(N)。 – JPvdMerwe