如何在python中删除基于len的列表中的列表?

如何在python中删除基于len的列表中的列表?,python,list,sublist,Python,List,Sublist,我有下面的输入列表 A = [['A',[1,2,3]],['D',[3,4]],['E',[6,7]],['F',[1]]] 我想要长度为2的子列表。 在上面的例子中,我想删除[A[1,2,3]]、[F[1]]等等 我正在创建一个新列表并附加所有长度==2的子列表。 如果我可以直接从A中删除不需要的子列表,那将是理想的 A = [x if len(x)==2 for x in A] 仅供参考,您的E和F列表没有右括号,但我假设这只是复制/粘贴错误或类似错误 仅供参考,您的E和F列表没有右括

我有下面的输入列表

A = [['A',[1,2,3]],['D',[3,4]],['E',[6,7]],['F',[1]]]
我想要长度为2的子列表。 在上面的例子中,我想删除[A[1,2,3]]、[F[1]]等等 我正在创建一个新列表并附加所有长度==2的子列表。 如果我可以直接从A中删除不需要的子列表,那将是理想的

A = [x if len(x)==2 for x in A]
仅供参考,您的E和F列表没有右括号,但我假设这只是复制/粘贴错误或类似错误


仅供参考,您的E和F列表没有右括号,但我假设这只是复制/粘贴错误或类似错误。

应该是这样吗

A = [x for x in A if len(x[1]) == 2]
甚至

A = [[a, b] for a, b in A if len(b) == 2]

难道不是这样吗

A = [x for x in A if len(x[1]) == 2]
甚至

A = [[a, b] for a, b in A if len(b) == 2]

您可能需要使用过滤器

filter(lambda x: len(x[1]) == 2, A)
这假设每个元素(列表)有2个元素,第二个元素是列表。您希望筛选在此内部列表中正好有2个元素的元素

有关过滤器的更多信息:

过滤器(…) 过滤器(函数或无、序列)->列表、元组或字符串

Return those items of sequence for which function(item) is true.

同样,可以通过列表理解来实现:


[x代表if len(x[1])==2]中的x
您可能需要使用过滤器

filter(lambda x: len(x[1]) == 2, A)
这假设每个元素(列表)有2个元素,第二个元素是列表。您希望筛选在此内部列表中正好有2个元素的元素

有关过滤器的更多信息:

过滤器(…) 过滤器(函数或无、序列)->列表、元组或字符串

Return those items of sequence for which function(item) is true.

同样,可以通过列表理解来实现:


[x代表if len中的x(x[1])==2]

创建新的筛选列表更好、更容易
A[:]=…
是一个切片分配,这意味着新列表的内容将复制回
A
,以便对同一列表的其他引用将看到更新。如果您不需要保留
A
的标识,您可以使用
A=…

>>> A = [['A',[1,2,3]],['D',[3,4]],['E',[6,7]],['F',[1]]]
>>> A[:] = [x for x in A if len(x[1]) == 2]
>>> A
[['D', [3, 4]], ['E', [6, 7]]]

就地删除通常效率低下,因为每次删除项目时都需要将剩余的项目向下移动。当您从正在迭代的列表中删除元素时,您还需要注意不要跳过元素。

创建新的筛选列表更好、更容易
A[:]=…
是一个切片分配,这意味着新列表的内容将复制回
A
,以便对同一列表的其他引用将看到更新。如果您不需要保留
A
的标识,您可以使用
A=…

>>> A = [['A',[1,2,3]],['D',[3,4]],['E',[6,7]],['F',[1]]]
>>> A[:] = [x for x in A if len(x[1]) == 2]
>>> A
[['D', [3, 4]], ['E', [6, 7]]]
就地删除通常效率低下,因为每次删除项目时都需要将剩余的项目向下移动。当您从正在迭代的列表中删除时,您还需要注意不要跳过元素。

len(['A',[1,2,3]])和
len(['F',[1]])的len是2。我们应该假定你指的是镜头或其他东西的总和吗。因为所有的子列表都是
len==2
?还有,我怀疑缺失的]是用来关闭
['E',[6,7]
len(['A',[1,2,3]])
是2,就像
len(['F',[1]])
的len一样。我们是否应该假定你指的是lens的总和或其他什么。因为如果缺失的]被放在想象的地方,你所有的子列表都是
len==2
?另外,我怀疑丢失的]'一个是为了关闭
['E',[6,7]