2016-11-09 57 views
0

在Python 2.7中使用itertools,如何表示代碼的哪些部分(在鏈接中突出顯示)應該重複?另外,計數迭代器或組合迭代器對於這種情況更好嗎?我列出了ArcGIS中使用ID(numID)和引用字段的數量(使用arcpy)來創建新類型的ID。目標是縮短代碼,現在列出每個numIDs和行[x] =「...-(01)」。這是代碼,爲此,我試圖寫和迭代器:Python itertools ID字段的計數或組合

if numIDs == "1": 
     row[3] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (01)" 
     cursor.updateRow(row) 
    elif numIDs == "2": 
     row[3] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (01)" 
     row[4] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (02)" 
     cursor.updateRow(row) 
    elif numIDs == "3": 
     row[3] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (01)" 
     row[4] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (02)" 
     row[5] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (03)" 
     cursor.updateRow(row) 
    elif numIDs == "4": 
     row[3] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (01)" 
     row[4] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (02)" 
     row[5] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (03)" 
     row[6] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (04)" 
     cursor.updateRow(row) 
    elif numIDs == "5": 
     row[3] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (01)" 
     row[4] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (02)" 
     row[5] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (03)" 
     row[6] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (04)" 
     row[7] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (05)" 
     cursor.updateRow(row) 
    elif numIDs == "6": 
     row[3] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (01)" 
     row[4] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (02)" 
     row[5] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (03)" 
     row[6] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (04)" 
     row[7] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (05)" 
     row[8] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (06)" 
     cursor.updateRow(row) 
    elif numIDs == "7": 
     row[3] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (01)" 
     row[4] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (02)" 
     row[5] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (03)" 
     row[6] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (04)" 
     row[7] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (05)" 
     row[8] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (06)" 
     row[9] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (07)" 
     cursor.updateRow(row) 
    elif numIDs == "8": 
     row[3] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (01)" 
     row[4] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (02)" 
     row[5] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (03)" 
     row[6] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (04)" 
     row[7] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (05)" 
     row[8] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (06)" 
     row[9] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (07)" 
     row[10] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (08)" 
     cursor.updateRow(row) 
    elif numIDs == "9": 
     row[3] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (01)" 
     row[4] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (02)" 
     row[5] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (03)" 
     row[6] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (04)" 
     row[7] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (05)" 
     row[8] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (06)" 
     row[9] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (07)" 
     row[10] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (08)" 
     row[11] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (09)" 
     cursor.updateRow(row) 
    elif numIDs == "10": 
     row[3] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (01)" 
     row[4] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (02)" 
     row[5] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (03)" 
     row[6] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (04)" 
     row[7] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (05)" 
     row[8] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (06)" 
     row[9] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (07)" 
     row[10] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (08)" 
     row[11] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (09)" 
     row[12] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (10)" 
     cursor.updateRow(row) 
+0

是'row'一個'list'或'dict'對象? –

+0

對於你的下一個問題,請閱讀[mcve]。 – boardrider

回答

0

我不知道你想做什麼,但這些代碼讓我想一個灌木叢下隱藏。

這並不完全一樣,你的代碼:

for i in range(numIDs): 
    row[i+3] = "(" + row[0] + ") - (" + row[1] + ") - (" + row[2] + ") - (%02i)" %(i+1) 
    cursor.updateRow(row) 
0

此代碼等同於:

for i in range(1, numIDs+1): 
    row[i+2] = "({}) - ({}) - ({}) - (%02i)".format(row[0], row[1], row[2], i) 
    cursor.updateRow(row)