Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
忽略特定Python列表元素的优雅方式_Python_List_Duplicates - Fatal编程技术网

忽略特定Python列表元素的优雅方式

忽略特定Python列表元素的优雅方式,python,list,duplicates,Python,List,Duplicates,我最近开始尝试学习Python,并尝试改进我编写代码的方式,使之更“Pythonic”。 因此,如果有人能向我解释一下下面的公式是否可以更优雅一些,那就太好了。 希望这不是重复的(我检查过了,但你永远不知道) 我有一个5个元素的列表,我想返回特定的元素。 比如说我有[1,2,3,3,4]。 我已经有了一个函数double(list),如果list元素存在两次,它将返回该元素(在本例中为3) 我想从这个列表中生成一个元组,其中包含只存在一次(1、2、4)的数字 一种选择是: 运行double(li

我最近开始尝试学习Python,并尝试改进我编写代码的方式,使之更“Pythonic”。 因此,如果有人能向我解释一下下面的公式是否可以更优雅一些,那就太好了。 希望这不是重复的(我检查过了,但你永远不知道)

我有一个5个元素的列表,我想返回特定的元素。 比如说我有[1,2,3,3,4]。 我已经有了一个函数double(list),如果list元素存在两次,它将返回该元素(在本例中为3)

我想从这个列表中生成一个元组,其中包含只存在一次(1、2、4)的数字

一种选择是:

  • 运行double(list)函数并获取double元素的值
  • 创建一个空元组
  • 迭代列表项,如果值不等于double(list)函数返回的值,则将其添加到元组中
  • 返回元组
  • 我的问题是:有没有一种更优雅/更像蟒蛇的方式? (在一行中,可能使用更复杂的表达式?)

    提前感谢

    我将使用:

    >>> 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]