【发布时间】:2022-07-29 14:27:40
【问题描述】:
我有一个代码,它实质上删除了另一个列表中存在的列表中的任何项目,该列表包含的项目比删除的列表更多。删除的列表包含我要从用户输入的图像上传中删除的图像的图像名称
这是第一个代码:
for i in images:
if i.name in adi:
# del images[images.index(i)]
images.pop(images.index(i))
这适用于小文件输入,但每当我尝试上传最多 21 或 20 个图像输入时,它删除的数量就会出错,而不会删除列表中要删除的某些项目。 所以我尝试两次运行相同的代码:
for i in images:
if i.name in adi:
# del images[images.index(i)]
images.pop(images.index(i))
for k in images:
if k.name in adi:
images.pop(images.index(k))
尽管如此,在接受用户输入后,列表中仍将至少保留一张要删除的图像。我用于实现的逻辑有什么问题吗?如果有问题,我应该如何实现它
【问题讨论】:
-
如果您尝试添加 else 语句并打印出未被删除的图像的名称,以查看是否发生了任何奇怪的事情,这可能会有所帮助。否则删除重叠项目的代码对我来说似乎很好(运行一次就足够了)。
-
本来应该是 10 的 else 打印了 7 个项目
-
images = [image for image in images if image.name not in adi] -
真正的结果是,不要从你正在迭代的列表中删除东西——它实际上是在锯掉你所在的分支。
标签: python django list sorting