gpt4 book ai didi

python - 如果找到多个值中的任何一个,则删除嵌套列表

转载 作者:行者123 更新时间:2023-11-30 22:53:05 24 4
gpt4 key购买 nike

我有一个列表列表,我想删除包含多个值中的任意一个的所有嵌套列表。

list_of_lists = [[1,2], [3,4], [5,6]]
indices = [i for i,val in enumerate(list_of_lists) if (1,6) in val]

print(indices)
[0]

我想要一个符合条件的索引列表,以便我可以:

del list_of_lists[indices]

删除包含特定值的所有嵌套列表。我猜问题是我尝试检查多个值 (1,6) ,因为使用 16 有效。

最佳答案

您可以使用集合操作:

if not {1, 6}.isdisjoint(val)

如果没有任何值出现在另一个序列或集合中,则集合是不相交的:

>>> {1, 6}.isdisjoint([1, 2])
False
>>> {1, 6}.isdisjoint([3, 4])
True

或者只测试这两个值:

if 1 in val or 6 in val

我不会建立索引列表。只需重建列表并过滤掉新列表中您不想要的任何内容即可:

list_of_lists[:] = [val for val in list_of_lists if {1, 6}.isdisjoint(val)]

通过分配给[:]整个切片,您可以替换list_of_lists中的所有索引,就地更新列表对象:

>>> list_of_lists = [[1, 2], [3, 4], [5, 6]]
>>> another_ref = list_of_lists
>>> list_of_lists[:] = [val for val in list_of_lists if {1, 6}.isdisjoint(val)]
>>> list_of_lists
[[3, 4]]
>>> another_ref
[[3, 4]]

参见What is the difference between slice assignment that slices the whole list and direct assignment?有关分配给切片的作用的更多详细信息。

关于python - 如果找到多个值中的任何一个,则删除嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38328242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com