Python正在向数组中添加我不希望看到的值

2024-04-27 04:26:04 发布

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

我尝试获取一个字段名数组,将它们复制到一个新数组中,然后根据它们与原始数组中的字段名的相似性向新数组添加其他字段名。 这将允许我以两种不同的方式在表中运行光标。。。第一个获取要显示的文本的字符长度,第二个获取文本,并将格式信息附加到文本的开头和结尾。你知道吗

“PointData”表有以下字段名“PrimeKey”、“Label”、“Field1”、“Field2”、“Field3”、“fb\u Field1”、“fp\u Field1”,格式信息保存在fb\u和fp\u字段中。你知道吗

fields = ['PrimeKey', 'Label', 'Field1', 'Field2', 'Field3']
table = "PointData"
AllFields = fields
for field in fields:
bfldnm = 'fb_' + field
pfldnm = 'fp_' + field
bfld = arcpy.ListFields(table, bfldnm)
pfld = arcpy.ListFields(table, pfldnm)
if bfld:
    AllFields.append(bfld[0].name)
bfld = []
if pfld:
    AllFields.append(pfld[0].name)
pfld = []

在运行这个for循环之后,得到的fields数组以另外两个字段名('fb\u Field1'和'fp\u Field1')结束。。。我不明白为什么。。。我只想将这两个值添加到AllFields数组中。你知道吗


Tags: 文本信息fieldfieldsfb格式table数组
2条回答

谢谢njzk2

   fields = ['PrimeKey', 'Label', 'Field1', 'Field2', 'Field3']
   table = "PointData"
   AllFields = fields[:]
   for field in fields:
    bfldnm = 'fb_' + field
    pfldnm = 'fp_' + field
    bfld = arcpy.ListFields(table, bfldnm)
    pfld = arcpy.ListFields(table, pfldnm)
    if bfld:
        AllFields.append(bfld[0].name)
    bfld = []
    if pfld:
        AllFields.append(pfld[0].name)
    pfld = []

@njzk2已经提到了这一点,但是我想我会添加一个解释这个基本原理的答案。Python通过pass-by-object-reference做任何事情。简单地说,这意味着当你完成任务时:

AllFields = fields

你不是在复制。有几种方法可以在python中进行复制,最简单的方法是通过切片技术:

AllFields = fields[:]

其他的在python的copy文档中有详细说明。例如:

import copy
AllFields = copy.copy(fields)

而且python传统上使用snake case,所以AllFields应该是all_fields

相关问题 更多 >