删除 Python 中具有一定数量元素的列表

Delete lists that have a certain amount of elements in Python

我有当前列表

[['A', 'B', 'C'],
 ['A', 'B', 'D'],
 ['A', 'B', 'C', 'D'],
 ['A', 'C', 'D'],
 ['B', 'C', 'D']]

我想删除列表 ['A'、'B'、'C'、'D']。有没有办法通过检查列表内部并删除列表(如果它有超过 3 个元素)来做到这一点? 谢谢

我知道我可以遍历整个列表,并添加长度为 3 的元素。但我认为效率不高

b=[['A', 'B', 'C'],
 ['A', 'B', 'D'],
 ['A', 'B', 'C', 'D'],
 ['A', 'C', 'D'],
 ['B', 'C', 'D']]
c=[]
for i in b:  
    if len(i)<=3:
        print(i)
        c.append(i)

此脚本通过解析原始列表的每个索引并获取其长度来创建新列表。如果长度为 3,那么它会被添加到新的 table,如果它的长度不是 3,那么它就会被遗忘

newlist = [] 
for a in range (0, len(oldlist)):
    if len(oldlist[a]) == 3:
        newlist.append(oldlist[a]) 

使用列表理解!

[ x for x in array ]

将 return 数组保持原样。 x 代表数组中的一个元素,在您的例子中,您要检查其长度的 sub-arrays。

您可以在此添加条件进行过滤:

[ x for x in array if ... ]

这将 return 数组,但仅适用于在 if.

之后通过条件的元素 x

因此您需要使用 len 函数检查 x 的长度。在这种情况下,当 len(x) <= 3

时,您的列表理解应该只包括 x

本着学习的精神,我没有给你字面上的答案,但你应该能够将这些信息拼凑起来。

尝试使用列表推导,它们非常强大并且经常在 python 中用于转换、映射和过滤数组。