初学者-Python 2.7.2,ArcGIS 10.1多个“或”条件,相同操作

初学者-Python 2.7.2,ArcGIS 10.1多个“或”条件,相同操作,python,arcgis,conditional-statements,Python,Arcgis,Conditional Statements,我是在周五开始使用Python的,所以我已经达到了相当基本的水平。我有一个带有多个层的.mdx,我希望一下子删除特定的命名实例 因此,我想选择带有“多个或”的图层,并将其从ToC中删除,而不是从光盘中删除。下面的“如果”行都不起作用 # Remove source features from TOC for lyr in arcpy.mapping.ListLayers(mxd, "", df): if (lyr.name == "name1") or (lyr.name() == "nam

我是在周五开始使用Python的,所以我已经达到了相当基本的水平。我有一个带有多个层的.mdx,我希望一下子删除特定的命名实例

因此,我想选择带有“多个或”的图层,并将其从ToC中删除,而不是从光盘中删除。下面的“如果”行都不起作用

# Remove source features from TOC
for lyr in arcpy.mapping.ListLayers(mxd, "", df):

 if (lyr.name == "name1") or (lyr.name() == "name2") or (lyr.name() == "name3"

 if (lyr.name == ("name1" or "name2" or "name3"):

   arcpy.mapping.RemoveLayer(df, lyr)

谢谢你的建议。

我不懂算法,但我认为你需要以下几点:

for lyr in arcpy.mapping.ListLayers(mxd, "", df):
    if lyr.name() in ['name1', 'name2', 'name3']:
        arcpy.mapping.RemoveLayout(df, lyr)

您是否收到无效的语法错误?两个ifs上都缺少一些右括号。此外,有时您使用lyr.name,有时您使用lyr.name。是哪一个?lyr.name还是lyr.name?我不知道-有什么区别?@Bruce Mitchell:lyr.name是一个属性或类变量,lyr.name是一个希望返回名称的方法。谢谢Michel。正如您在下面看到的,您对lyr.name的解释是解决此问题的关键。感谢您的快速响应。现在正在调查。终于成功了:。。。对于arcpy.mapping.ListLayersmxd中的lyr,df:。。。如果在['AllCENTROIDS'、'AllPOLYGONS'、'POLYGONSsenzaCENTROIDS']中使用lyr.name:。。。arcpy.mapping.RemoveLayerdf,lyr谢谢你的帮助。@Bruce Mitchell:很高兴它现在可以工作了。。。如果您投票选出所有正确答案并选择其中一个作为您的解决方案,那将是一件好事。无法使pythonic解决方案起作用。它对“arc.mapping”不满意。当我使用lyr.name而不是layer.name时,您的第一个解决方案成功了。谢谢。是的,我看到了。。。它不工作的方式,我写,但我不认为它可以写,否则。。。所以我把它拿走了。