Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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 如何在列表中查找最常见的元素(使用all())_Python - Fatal编程技术网

Python 如何在列表中查找最常见的元素(使用all())

Python 如何在列表中查找最常见的元素(使用all()),python,Python,我试图返回列表中最常见的元素(统计模式)。不幸的是,我不知道如何使用iterable的all。如果我不使用all(),它就是这个样子: 此代码有两个问题。第一个是set(a)需要第二个值来解包,第二个是all在这里不起作用 请帮帮我。谢谢 示例:在{'a'、'a'、'b'、'b'、'b'、'c'}中,您希望“b”是最大的元素好的-现在理解您的问题。下面的代码不是解决这个问题的一般方法。但是学习all()如何工作没关系。请注意,它的效率远远低于计数器。有趣的是,它将返回最频繁的每个元素,因此在需要

我试图返回列表中最常见的元素(统计模式)。不幸的是,我不知道如何使用iterable的
all
。如果我不使用all(),它就是这个样子:

此代码有两个问题。第一个是
set(a)
需要第二个值来解包,第二个是
all
在这里不起作用

请帮帮我。谢谢


示例:在
{'a'、'a'、'b'、'b'、'b'、'c'}
中,您希望“
b
”是最大的元素

好的-现在理解您的问题。下面的代码不是解决这个问题的一般方法。但是学习all()如何工作没关系。请注意,它的效率远远低于计数器。有趣的是,它将返回最频繁的每个元素,因此在需要精确处理多模态数据时可能会很有用

>>> q = list("aaabbbbcc")
>>> q
['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c']
>>> r = set(q)
>>> r
set(['a', 'c', 'b'])
>>> [x for x in r if all([q.count(x) >= q.count(y) for y in r])]
['b']
如果你一定要用
all
-我认为这不是最好的方法-试试看

def most_common(a):
    a_count = [(i, a.count(i)) for i in set(a)]
    for i,c in a_count:
        if all(c >= cc for ii,cc in a_count):
           return i

all()
不是迭代器,哦,你的权利,我想说的是如何在iterable中使用all,我已经将你链接到了文档页面;这应该给您一个开始。您的第一个函数与您的描述不匹配:它返回第一个不经常出现的项,其中项的顺序是不确定的(取决于
set
实现和项哈希)。因此对于
[1,1,2,3,3,3]
您的代码可能会返回
1
。另一个问题:效率。重复调用count是O(n^2),如果您构建一个
集合,则可以在O(n)中执行此操作。计数器
,然后查找
max(a,key=counts.get)
。您是在查找要返回的列表,还是表示“列表中最大元素数”的数字(如您所述)。你的话说了一个,但你的代码暗示了另一个。。你能澄清一下吗?谢谢,但我知道计数器,我想学习all()函数,以便将来可以使用它同时ii和cc指的是什么?(为什么你需要两个i和两个c?@Chowza:我用它作为“另一个i”和“另一个c”的缩写(因为我不能用i'和c';-)在你的第一个例子中,
all()
在所有内容都是小写时显示为true。难道不可能有
all()
在if语句下显示为true?这基本上就是我希望做的…也许我误解了它的全部功能-我已经发布了一个示例,应该可以为您澄清:)谢谢!!!我之所以想要这个答案而不是相反的答案,是因为我看到了
All()
以这种方式使用,它大大减少了代码行,我想开始这样编码,而不是为
循环编写多个嵌套的
。再次感谢!
>>> q = list("aaabbbbcc")
>>> q
['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c']
>>> r = set(q)
>>> r
set(['a', 'c', 'b'])
>>> [x for x in r if all([q.count(x) >= q.count(y) for y in r])]
['b']
from collections import Counter

def most_common(a):
    return Counter(a).most_common(1)[0][0]
def most_common(a):
    a_count = [(i, a.count(i)) for i in set(a)]
    for i,c in a_count:
        if all(c >= cc for ii,cc in a_count):
           return i