忽略特定Python列表元素的优雅方式
我最近开始尝试学习Python,并尝试改进我编写代码的方式,使之更“Pythonic”。 因此,如果有人能向我解释一下下面的公式是否可以更优雅一些,那就太好了。 希望这不是重复的(我检查过了,但你永远不知道) 我有一个5个元素的列表,我想返回特定的元素。 比如说我有[1,2,3,3,4]。 我已经有了一个函数double(list),如果list元素存在两次,它将返回该元素(在本例中为3) 我想从这个列表中生成一个元组,其中包含只存在一次(1、2、4)的数字 一种选择是:忽略特定Python列表元素的优雅方式,python,list,duplicates,Python,List,Duplicates,我最近开始尝试学习Python,并尝试改进我编写代码的方式,使之更“Pythonic”。 因此,如果有人能向我解释一下下面的公式是否可以更优雅一些,那就太好了。 希望这不是重复的(我检查过了,但你永远不知道) 我有一个5个元素的列表,我想返回特定的元素。 比如说我有[1,2,3,3,4]。 我已经有了一个函数double(list),如果list元素存在两次,它将返回该元素(在本例中为3) 我想从这个列表中生成一个元组,其中包含只存在一次(1、2、4)的数字 一种选择是: 运行double(li
>>> import collections
>>> l = [1, 2, 3, 3, 4]
>>> c = collections.Counter(l)
>>> [el for el in l if c[el] == 1]
[1, 2, 4]
通常的方法是先列出元素,然后对它们进行计数,或者只使用
集合。Counter
,然后通过创建一个空列表,然后使用传统循环将其添加到列表中,或者使用带过滤器的理解来遍历列表并仅包含适当的元素
>>> import collections
>>> l = [1, 2, 3, 3, 4]
>>> c = collections.Counter(l)
>>> new_list = [item for item in l if c[item] < 2]
>>> new_list
[1, 2, 4]
导入集合
>>>l=[1,2,3,3,4]
>>>c=集合。计数器(l)
>>>新列表=[如果c[项目]<2,则l中的项目对应项目]
>>>新名单
[1, 2, 4]
因为您需要一个单行解决方案(当然,除了实际的列表声明:):
如果您编写了一些工作代码,然后将其带到,您可能会得到更好的响应。谢谢!这就是我要找的。有人还向我指出了一个线程,在该线程中,列表首先被转换为一个集合,这应该会删除重复项。所以现在我有两个选择:-)
your_list = [1, 2, 3, 3, 4]
uniques = [item for item in your_list if your_list.count(item) == 1]