Python itertools ID字段的计数或组合

2024-04-24 23:57:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在python2.7中使用itertools,如何表示代码的哪些部分(在链接中突出显示)应该重复?另外,计数迭代器还是组合迭代器更适合这种情况?我在ArcGIS中列出ID的编号(numid)和引用字段(使用arcpy)来创建一个新类型的ID。目标是缩短代码,现在列出每个numid和行[x]=“…-(01)”。这是我正在尝试编写和迭代器的代码:

    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)

Tags: 代码id链接情况cursor编号row计数
2条回答

我不知道你想做什么,但那代码让我想躲在灌木丛下。你知道吗

这与您的代码完全相同:

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

此代码相当于:

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

相关问题 更多 >