是否有一种直接的方法可以删除包含所有相同元素的列表,而不是指定实际位置?例如,必须删除A[1],因为所有元素都是相同的?
A=[[[1],[2],[2]],[[3],[3],[3]],[[4],[5],[4]]]
print(A)
A.remove(A[1])
print(A)输出是而且应该是
[[[1],[2],[2]],[[4],[5],[4]]]发布于 2022-09-12 15:31:19
我们可以在这里使用列表理解:
A = [[[1],[2],[2]],[[3],[3],[3]],[[4],[5],[4]]]
output = [x for x in A if min(x) != max(x)]
print(output) # [[[1], [2], [2]], [[4], [5], [4]]]通过检查min和max值是否相同,我们可以将子列表识别为被删除的候选列表。如果这两个值不相同,则保留子列表。
发布于 2022-09-12 15:42:20
您可以使用list.count方法计算列表中相等项的数目。考虑到A的所有元素不可能是空的,您可以这样过滤它们。
filtered = [el for el in A if el.count(el[0]) != len(el)]或者,为了确保代码不会对空项抛出IndexError,可以检查项的长度。
filtered = [el for el in A if len(el) and el.count(el[0]) != len(el)]这种方法也适用于字符串和其他类型。
https://stackoverflow.com/questions/73691657
复制相似问题