gpt4 book ai didi

python 3 : Removing an empty tuple from a list of tuples

转载 作者:太空宇宙 更新时间:2023-11-03 12:17:25 27 4
gpt4 key购买 nike

我有一个元组列表,内容如下:

>>>myList
[(), (), ('',), ('c', 'e'), ('ca', 'ea'), ('d',), ('do',), ('dog', 'ear', 'eat', 'cat', 'car'), ('dogs', 'cars', 'done', 'eats', 'cats', 'ears'), ('don',)]

我希望它是这样读的:

>>>myList
[('',), ('c', 'e'), ('ca', 'ea'), ('d',), ('do',), ('dog', 'ear', 'eat', 'cat', 'car'), ('dogs', 'cars', 'done', 'eats', 'cats', 'ears'), ('don',)]

即我想从列表中删除空元组 () 。在执行此操作时,我想保留元组 ('',)。我似乎找不到从列表中删除这些空元组的方法。

我已经尝试过 myList.remove(()) 并使用 for 循环来执行此操作,但要么不起作用,要么我的语法有误。任何帮助将不胜感激。

最佳答案

您可以过滤“空”值:

filter(None, myList)

或者您可以使用列表理解。在 Python 3 上,filter() 返回一个生成器;列表理解返回 Python 2 或 3 上的列表:

[t for t in myList if t]

如果您的列表不仅仅包含元组,您可以显式测试空元组:

[t for t in myList if t != ()]

Python 2 演示:

>>> myList = [(), (), ('',), ('c', 'e'), ('ca', 'ea'), ('d',), ('do',), ('dog', 'ear', 'eat', 'cat', 'car'), ('dogs', 'cars', 'done', 'eats', 'cats', 'ears'), ('don',)]
>>> filter(None, myList)
[('',), ('c', 'e'), ('ca', 'ea'), ('d',), ('do',), ('dog', 'ear', 'eat', 'cat', 'car'), ('dogs', 'cars', 'done', 'eats', 'cats', 'ears'), ('don',)]
>>> [t for t in myList if t]
[('',), ('c', 'e'), ('ca', 'ea'), ('d',), ('do',), ('dog', 'ear', 'eat', 'cat', 'car'), ('dogs', 'cars', 'done', 'eats', 'cats', 'ears'), ('don',)]
>>> [t for t in myList if t != ()]
[('',), ('c', 'e'), ('ca', 'ea'), ('d',), ('do',), ('dog', 'ear', 'eat', 'cat', 'car'), ('dogs', 'cars', 'done', 'eats', 'cats', 'ears'), ('don',)]

在这些选项中,filter() 函数最快:

>>> timeit.timeit('filter(None, myList)', 'from __main__ import myList')
0.637274980545044
>>> timeit.timeit('[t for t in myList if t]', 'from __main__ import myList')
1.243359088897705
>>> timeit.timeit('[t for t in myList if t != ()]', 'from __main__ import myList')
1.4746298789978027

在 Python 3 上,改为坚持列表理解:

>>> timeit.timeit('list(filter(None, myList))', 'from __main__ import myList')
1.5365421772003174
>>> timeit.timeit('[t for t in myList if t]', 'from __main__ import myList')
1.29734206199646

关于 python 3 : Removing an empty tuple from a list of tuples,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20413393/

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