2016-06-07 18 views
1

我有一个元组列表,一些元组中只有一个元素。如何从列表中仅删除一个项目的元组?我想保留其中有两个元素的元组。删除只有一个项目的元组 - python

元组我都包含一个字符串,然后一个整数后

list = ((['text'],1),(['text'],2),((3,)) 
+4

我没有在这里看到一个'list',同时命名你的变量'list'会影响内建类型'list'也是你说明你想要的输出是删除最后一个条目? – EdChum

回答

5

我建议:

filtered_list = [tup for tup in list if len(tup) == 2] 

您还可以检查元组的长度大于1或任何其他更高...

2

你想创建一个带方括号而不是圆括号的列表,否则你会创建一个元组。

另外请不要像EdChum建议的那样调用像内置名称这样的变量。

这里的解决方案是过滤列表:

l=[(1,2),(3,),(4,5)] 
filter(lambda x: len(x)!=1, l) 
+0

不要忘记分配你的结果,否则会丢失。 – glglgl

+0

如果您需要使用'lambda'来使用它,请不要使用'filter'。 Py2和Py3之间的行为不一致,当你需要使用'lambda'时,它通常比较慢并且更加冗长。如果len(x)!= 1]或者生成器表​​达式(aka genexpr),'(x for x in l if len(x)!= 1),则使用list comprehension(又名listcomp) '而是在Py2和Py3上保持一致,更快(并且根据Guido,更多Pythonic)行为。 – ShadowRanger

3

什么:

new_list = [x for x in old_list if len(x) > 1] 
0

你可以使用类似的东西来重建与元组新的元组的长度大于1 。

new_list = tuple(item for item in your_list if len(item) > 1) 
相关问题