简体   繁体   中英

Python itertools Count or Combination for ID Fields

Using itertools in Python 2.7, how do I signify which parts of the code (highlighted in link) should be repeated? Also, is the count iterator or combination iterator better for this case? I am listing the numbers of IDs (numIDs) and referencing fields in ArcGIS (using arcpy) to create a new type of ID. The goal is to shorten the code and now list every numIDs and row[x] = "...- (01)". This is the code, for which I am attempting to write and iterator:

    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)

I'm not sure what you're trying to do, but that code makes me want to hide under a bush.

This does exactly the same as your code:

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

This code is equivalent to:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM