...
dsets = arcpy.ListDatasets("*","Feature")
for dataset in dsets:
if "contour" in dataset:
dsets.remove(dataset)
for ds in dsets:
print ds
...
dsets = [ds for ds in arcpy.ListDatasets("*","Feature") if "contour" not in ds]
dsets = arcpy.ListDatasets("*","Feature")
if "contour" in dsets:
dsets.remove("contour")
dsets = [ds for ds in arcpy.ListDatasets("*","Feature") if ds != "contour"]
you could try this:... dsets = arcpy.ListDatasets("*","Feature") rsets = [] for dataset in dsets: if dataset != "contour": rsets.append(dataset) for ds in rsets: print ds ...
>>> arcpy.env.workspace=("e:/test")
>>> ld = arcpy.ListDatasets("*","Raster")
>>> print ld
[u'myrasout.asc', u'ras_test2', u'ras_test22.asc', u'ras_test22.tif', u'ras_test2_2', u'ras_test3', u'ras_test3_3']
>>> for l in ld:
... if "myrasout" in l: # the one i´d like to filter out
... ld.remove(l)
...
>>> print ld
[u'ras_test2', u'ras_test22.asc', u'ras_test22.tif', u'ras_test2_2', u'ras_test3', u'ras_test3_3']
ld1 = [ds for ds in arcpy.ListDatasets("*","Raster") if "myrasout" not in ds]
>>> print ld1
[u'ras_test2', u'ras_test22.asc', u'ras_test22.tif', u'ras_test2_2', u'ras_test3', u'ras_test3_3']
curious as to what´s bugged/why my code doesn´t work for you.
"ras_test2" in l
for l in list(ld): if l == "contour": ld.remove(l)
What threw me of is your use of the "in" operator to compare strings. Your code would remove "contours","contour1", and "xcontour" because you are using "in" instead of "==" in your remove test