4 votos

¿Por qué [0] es necesaria en fila [0] al utilizar cursores de ArcPy (Data Access)?

Cuando se ejecuta el siguiente código 2 muestra, "[0]" es necesario añadir después de "fila" para que el código funcione bien. Estaba confundido. ¿puede cualquier persona explicar? Sé que sería demasiado fácil para la mayoría de ustedes desde aquí.

código de ejemplo #1:

código de ejemplo #2:

12voto

Amy Puntos 46

simplemente se refiere al primer campo en la lista de campos en el cursor. Ya que sólo tienes un campo en la lista, , entonces se refiere a ese campo. Si tuvieras varios campos, que estaban buscado o actualizado en tus cursores, entonces

Es simplemente cómo python acceder a elementos en una lista.

7voto

Alex Tereshenkov Puntos 13433

Grandes respuestas. Pero parece como si el row sí no fue demostrado en las respuestas.

Otra cosa que es bueno saber es que cuando un solo campo se suministra, un singleton tupla se devuelve (row en este caso):

with arcpy.da.SearchCursor(fc,"PROPERTY_ID") as search_cur:
    for row in search_cur:
        print row
        break

 >>> (5001,)

Es fácil comprender que este es un singleton tupla mirando el punto y coma final que tiene. Por cierto, no es necesario suministrar una lista de los campos cuando se tiene un solo campo. Esta línea también se pondría a trabajar para usted:

cursor = arcpy.da.SearchCursor("alaska","PERIMETER",'"PERIMETER"=0.224')

Por favor, utilice el with declaración en la construcción de los cursores; esto controlará la limpieza y la eliminación de los objetos cuando se han utilizado y ya no son necesarios. Echa un vistazo a los Esri muestras aquí y otras muestras aquí.

Una forma práctica de acceder a todas las funciones dentro de una clase de entidad sin el uso de la for de iteración, es una lista de comprensión:

feats = [feat for feat in arcpy.da.SearchCursor(fc,"PROPERTY_ID")]
#printing first three elements
print feats[:3]
>>> [(5001,), (5002,), (1003,)]

El feats puede ser referido como una lista de singleton tuplas. Bastante a menudo, usted sería como para obtener una lista de los valores sin tener tuplas. De nuevo, la comprensión de lista que viene en muy práctico.

feats = [feat[0] for feat in arcpy.da.SearchCursor(fc,"PROPERTY_ID")]
#printing first three elements
print feats[:3]
>>> [5001, 5002, 1003]

El feat[0] devuelve un primer elemento en el singleton tupla.

5voto

UnkwnTech Puntos 21942

En ambos ejemplos cursor es un objeto Cursor que se compone de muchos objetos.

Utilice el for de bucle para iterar a través de los objetos que se han llamado row.

La Fila objeto devuelto por arcpy.da.UpdateCursor() es una lista de valores. La comprensión de las listas de Python en lugar de ArcPy tema pero pensar en él como valores separados por comas entre corchetes así que si usted print el suyo se verá como [123.456] (una fila) porque es una lista de uno punto flotante elemento.

Para ver este intente ejecutar este código que acabo de probar en ArcGIS 10.4:

importación de arcpy

sf = r"C:\Data\Exercise07\alaska.shp"
cursor = arcpy.da.UpdateCursor(sf,["PERIMETER"])
for row in cursor:
    print row

Si usted cargado de tres campos (texto, entero, texto) en el cursor, a continuación, impreso row podría ser algo como ["A",23,"Road"].

Cada vez que tenga una lista (o una tupla, que es muy similar) se utiliza un índice para llegar a sus elementos.

Si su fila tiene un solo elemento, a continuación, se puede conseguir en la que el uso de un índice de valor de 0, es decir, fila[0]. En la "lista de 3" ejemplo para llegar a la segunda y tercera valores que me gustaría utilizar fila[1] y fila[2] respectivamente.

Como identificado por @AlexTereshenkov de Búsqueda, los Cursores de retorno de tuplas mientras que los Cursores de Actualización devolver listas para notar que mi ejemplo utiliza los Cursores de Actualización, pero es bastante similar a la Búsqueda de los Cursores.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X