Elegant Way of Ignoring Specific Python ListElements
本问题已经有最佳答案,请猛点这里访问。
我最近开始尝试学习Python,并尝试改进编写代码的方式,使之更"Python式"。因此,如果有人能向我解释一下以下内容是否可以更优雅地表达出来,那就太好了。希望这不是一个副本(我查过,但你永远不知道)
我有一个5个元素的列表,我想返回特定的元素。例如,我有[1,2,3,3,4]。我已经有了一个函数double(list),如果列表元素存在两次,它将返回该元素(在本例中是3)。
我想从这个列表中生成一个包含只存在一次的数字(1,2,4)的元组。
一种选择是:
我的问题是:有没有一种更优雅的/Python式的方法?(在一行中,使用可能更复杂的表达式?)
提前谢谢
实现这一点的一般方法是先对元素进行集合,然后对其进行计数,或者只使用
1 2 3 4 5 6 | >>> 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 2 3 | your_list = [1, 2, 3, 3, 4] uniques = [item for item in your_list if your_list.count(item) == 1] |
我会用
1 2 3 4 5 | >>> import collections >>> l = [1, 2, 3, 3, 4] >>> c = collections.Counter(l) >>> [el for el in l if c[el] == 1] [1, 2, 4] |