我正在尝试获取数组中出现频率最高的两个元素的数量。例如,在列表['aa','bb','cc','dd','bb','bb','cc','ff']中,最频繁的应该是3('bb' 在数组中出现的次数)和第二个最频繁的2('cc' 在数组中出现的次数)。
我试过这个:
max = 0
snd_max = 0
for i in x:
aux=x.count(i)
if aux > max
snd_max=max
max=aux
print(max, snd_max)
Run Code Online (Sandbox Code Playgroud)
但我怀疑是否有更简单的方法?
我必须用该元素的出现次数替换列表中的所有元素,就像我有“泰勒斯威夫特”一样,结果将是 [1,1,1,1,1,1,1,1,1,1 ,1,1]。
我已经编写了计算出现次数的代码,我只知道如何用我已经尝试过的出现次数替换所有元素:
ocurr :: [Char] -> Char -> Int
ocurr xs x = length(filter (x==) xs)
frequencias :: [Char] -> [Char]
frequencias "" = []
frequencias xs = [ ocurr xs y| y <- xs]
Run Code Online (Sandbox Code Playgroud)
和
ocurr :: [Char] -> Char -> Int
ocurr xs x = length(filter (x==) xs)
frequencias :: [Char] -> [Char]
frequencias "" = []
frequencias xs = [x | y <- xs x = ocurr xs x]
Run Code Online (Sandbox Code Playgroud)
但这些都不起作用……有人可以帮我吗?
我必须有一个数据 Student 和一个类型类:
data Student = Student {nome :: String
, stdNumber :: Int
, approvedClass :: Int
, failedClass :: Int
}
type Class = [Student]
Run Code Online (Sandbox Code Playgroud)
我正在尝试添加到批准的班级编号中,但学生失败了,但我不知道该怎么做。我已经有了这个:
addClasses :: Student-> Int -> Int -> Student
addClasses student aC fC = (student _ _ (approvedClass+aC) (faileClass+fC))
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我不明白为什么?或者如何使它工作?