忽略特定Python ListElements的优雅方式

时间:2016-09-16 08:03:48

标签: python list duplicates

我最近开始尝试学习Python,并且我尝试改进编写代码的方式,并使其更多" Pythonic"。 因此,如果有人可以向我解释是否可以更优雅地制定以下内容真的很好。 希望这不是重复(我检查过,但你永远不知道)

我有一个包含5个元素的列表,我想返回特定的元素。 让我们举个例子说我有[1,2,3,3,4]。 我已经有一个函数double(list),如果列表元素存在两次,则返回该元素(在本例中为3)。

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

一个选项如下:

  1. 运行double(list)函数并获取double元素的值。
  2. 创建一个空元组
  3. 迭代列表项,如果值不等于double(list)函数返回的值,则将其添加到元组
  4. 返回元组。
  5. 我的问题是:有更优雅/ Pythonic的方式吗? (在一行中,使用更复杂的表达式?)

    提前致谢

3 个答案:

答案 0 :(得分:1)

执行此操作的一般方法是创建元素集,然后对它们进行计数,或者只使用collections.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]

答案 1 :(得分:0)

我会使用collections.Counter

>avr-gcc -Wa,-gdwarf2 -x assembler-with-cpp -c -mmcu=atmega256rfr2 halW1.S -I "..\include"

答案 2 :(得分:0)

因为你想要一个单行解决方案(当然除了实际的列表声明:) :):

var tempPath = "@HttpUtility.JavaScriptStringEncode(Path.GetTempPath())";