如何删除列表python中的特定项单词?
我想删除颜色[0,4,5],因此输出将为:如何删除列表python中的特定项单词?,python,Python,我想删除颜色[0,4,5],因此输出将为: color = ['Red', 'Green', 'White', 'Black', 'Pink', 'Yellow'] 我应该写什么?您可以使用列表理解以及: colors=[“红色”、“绿色”、“白色”、“黑色”、“粉色”、“黄色”] 指数=[0,4,5] 索引集=集(索引) 过滤=[i的颜色,枚举中的颜色(如果i不在索引集合中) 打印(过滤)#[“绿色”、“白色”、“黑色”] 您必须减去要删除的元素的位置,因为每次删除一个元素时,列表的长度都会
color = ['Red', 'Green', 'White', 'Black', 'Pink', 'Yellow']
我应该写什么?您可以使用列表理解以及:
colors=[“红色”、“绿色”、“白色”、“黑色”、“粉色”、“黄色”]
指数=[0,4,5]
索引集=集(索引)
过滤=[i的颜色,枚举中的颜色(如果i不在索引集合中)
打印(过滤)#[“绿色”、“白色”、“黑色”]
您必须减去要删除的元素的位置,因为每次删除一个元素时,列表的长度都会减少,将其他元素赋予给定的位置
color = ['Red', 'Green', 'White', 'Black', 'Pink', 'Yellow']
inc =[0,4,5]
fil=list(set(color)-set([color[x] for x in inc ]))
print(fil)
最短的代码为您的目标。打印语句是为了显示它的工作原理
color = ['Red', 'Green', 'White', 'Black', 'Pink', 'Yellow']
color.pop(0)
color.pop(4-1)
color.pop(5-2)
print(color)
如果删除列表中的数字发生更改(例如[0,5,4]),您可以先排序:
color = ['Red', 'Green', 'White', 'Black', 'Pink', 'Yellow']
remove = [0,4,5]
remove.reverse()
for x in remove:
print(x)
color.pop(x)
print(color)
注意:这与@Aplet123的答案基本相同,但有一些额外的细节
供参考:这是否回答了您的问题?两行(5行减去设置/打印值的3行)已经很短了。我不想命名颜色。这样做的目的是,此位置[0,4,5]中的每种颜色都将始终从列表中删除,而不给它命名。虽然此代码可能会回答此问题,但提供有关如何和/或为什么解决此问题的附加上下文将提高答案的长期价值。我使用颜色列表中的标记“`[color[x]for x in inc]```将它们转换为设置二者,然后减去两个集合,然后重新转换为列表你有答案了好的,这更容易
list(set(color)-set([color[x]代表inc中的x]))
对不起,我在StackOverflow方面没有太多经验这是错误且缓慢的。它在这个特定示例中起作用,因为索引[0,4,5]
恰好是有序且唯一的。但是如果要删除=[4,0,5,0]
呢?此外,不鼓励这种就地修改(如果在函数的参数上使用,而不首先使用.copy()
),可能会产生严重的副作用)。至于速度,例如,如果列表中有1M个元素,而to_drop
有10K个元素,则这比@Aplet123 correct answer花费的时间多20倍。@PierreD 1)这只是一种替代方法。2) 该解决方案仍然根据原始问题提供正确答案。3) 问题过于简单化了。4) 我决不比别人说得更好。5) 虽然我完全理解这种方法的内在问题,但我想感谢您的解释。
color = ['Red', 'Green', 'White', 'Black', 'Pink', 'Yellow']
remove = [0,4,5]
remove.reverse()
for x in remove:
print(x)
color.pop(x)
print(color)
remove.sort(reverse=True)
[color.pop(x) for x in remove]
color = ['Red', 'Green', 'White', 'Black', 'Pink', 'Yellow']
list(map(color.pop, reversed([0, 4, 5])))
print(color)
['Green', 'White', 'Black']
[v for i, v in enumerate(colors) if i not in {0, 4, 5}]
def drop(lst, to_drop):
drop_idx = frozenset(to_drop)
return [v for i, v in enumerate(lst) if i not in drop_idx]
colors = list(np.random.uniform(size=1_000_000))
to_drop = list(np.random.choice(np.arange(len(colors)), replace=False, size=10_000))
%timeit drop(colors, to_drop)
# 68.4 ms ± 233 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)