首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >过滤双倍列表并将函数应用于该结果

过滤双倍列表并将函数应用于该结果
EN

Stack Overflow用户
提问于 2016-11-03 06:15:28
回答 2查看 140关注 0票数 1

92.0,81.0,81.0,41.0,69.0,95.0,82.0,25.0,92.0,18.0,60.0,68.0,29.0,75.0,87.0,24.0,99.0,93.0,76.0,49.0,36.0

测试列表在上面

基本上,我得到了一个数字列表,我要提取三组,然后应用一个函数来得到我的答案。我不能使用导入或递归。

取一个双倍的列表,将每组连续的三倍处理为三角形三边的长度,使用triangle_area计算其面积;在处理列表中的所有双倍后,将所有计算区域返回为双倍列表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
triangle_area :: Double -> Double -> Double -> Double
triangle_area a b c = sqrt (s * (s - a) * (s - b) * (s - c)) where s = (a +           b + c) / 2.0

triangle_areas :: [Double] -> [Double]
triangle_areas xs = []

我打算在这个列表上使用过滤器,但是不适用于doubles.In --给定的列表-- triangle_area函数的三组表示(a,b,c)。然后,我需要将triangle_area函数应用于这些数字。

不知道该怎么做

因此,给定92.0,81.0,81.0,41.0,69.0,95.0,82.0,25.0,92.0,18.0,60.0,68.0,29.0,75.0,87.0,24.0,99.0,93.0,76.0,49.0,36.0

上表后的面积应为3066.9,1258.5,986.4,510.9,1052.0,1106.7,712.6。

这是另一次尝试,但不起作用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
triangle_area :: Double -> Double -> Double -> Double
triangle_area a b c = sqrt (s * (s - a) * (s - b) * (s - c)) where s = (a +     b + c) / 2.0

splitEvery :: Int -> [a] -> [[a]]
splitEvery n = takeWhile (not.null) . map (take n) . iterate (drop n)

triangle_areas :: [Double] -> [Double]
triangle_areas [] = []
triangle_areas (a:b:c:xs) = triangle_area a b c : triangle_areas xs

基本上,我想做splitEvery 3. 1..9,然后把triangle_area放在被分解的列表上。

triangle_areas目前工作得很好,但是我不能使用递归,所以我需要重新工作。

工作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
splitEvery :: Int -> [a] -> [[a]]
splitEvery n = takeWhile (not.null) . map (take n) . iterate (drop n)

triangle_area [a,b,c] = sqrt (s * (s - a) * (s - b) * (s - c)) 
                    where s = (a + b + c) / 2.0

triangle_areas = map triangle_area . splitEvery 3

非常感谢切普纳

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-03 06:56:35

您可以使用map的定义作为灵感。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
map :: (a -> b) -> [a] -> [b]
map _ [] = []
map f (x:xs) = f x : map f xs

map将其函数应用于一个参数;您希望将函数应用于三个参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
triangle_areas :: [Double] -> [Double]
triangle_areas xs = map3 triangle_area xs
                    where map3 f (s1:s2:s3:rest) = f s1 s2 s3 : map3 f rest
                          -- map3 _ [s1, s2] = ???
                          -- map3 _ [s1] = ???
                          map3 _ [] = []

我使map3成为了一个部分函数,对于剩下1或2个值的列表,它没有定义。

您的splitEvery是可以的;您只需要修改triangle_area的定义,这样它就可以将一个3元素列表作为输入。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
triangle_area [a,b,c] = sqrt (s * (s - a) * (s - b) * (s - c)) 
                        where s = (a + b + c) / 2.0

现在您只需将其映射到splitEvery的输出上即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
triangle_areas = map triangle_area . splitEvery 3
票数 3
EN

Stack Overflow用户

发布于 2016-11-03 10:04:14

以下不是最优雅的,但可以作为灵感(至少在您的示例中是这样的):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    triangle_areas :: [Double] -> [Double]
    triangle_areas =
      fst .
      foldl (\(r, sides) x ->
              if length sides == 2
              then (r ++ [triangle_area (sides !! 0) (sides !! 1) x], [])
              else (r, sides ++ [x]))
      ([],[])

它的工作方式是累积计算出的区域和当前三角形的边,然后再计算其面积。这是在元组(r, sides)中完成的。当得到三角形的三边(在列表sides中累积2,在参数x中计算第三条)时,计算面积并将其添加到结果列表中,否则保留结果列表不变,将当前边(参数x)添加到sides中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40403807

复制
相关文章
vue列表过滤
一种常见的列表过滤方式是使用计算属性。计算属性是Vue.js提供的一种便捷的属性,它根据已有的数据计算出一个新的属性,并将结果缓存起来,只在相关依赖发生改变时才重新计算。通过使用计算属性,可以根据特定的条件过滤列表数据。
堕落飞鸟
2023/05/21
5940
python 列表过滤
-------or values = ['1', '2', '-3', '-', '4', 'N/A', '5'] def is_int(val): try: x = int(val) return True except ValueError: return False ivals = list(filter(is_int, values)) print(ivals)
用户5760343
2019/09/25
9480
双倍的分辨率,双倍的快乐
这个工具名为waifu2x,已经开源在GitHub上了,而且随着开源,基于waifu2x的第三方软件也逐渐多了起来,现在已经开发成了普通人也可以使用的软件了。waifu2x的主要功能就是处理动漫风格的图片使之分辨率和清晰度在一定程度上提高,最大提高两倍,因而为2x。
分享者
2022/05/17
3780
双倍的分辨率,双倍的快乐
python列表过滤的方法
在python中,对列表这样的数据结构进行过滤,提取自己需要的元素,组成新的列表,是很常见的操作,这就要自然而然的用到列表过滤了,而常用的过滤当然就是循环后通过if进行,但是这样子,显然就是代码的开支有些大。
py3study
2020/01/13
1.7K0
实现逻辑回归,并将其应用于两个不同的数据集。
ex2.m %% Machine Learning Online Class - Exercise 2: Logistic Regression % % Instructions % ------------ % % This file contains code that helps you get started on the logistic % regression exercise. You will need to complete the following functions
裴来凡
2022/05/28
6700
实现逻辑回归,并将其应用于两个不同的数据集。
使用Spark进行数据统计并将结果转存至MSSQL
在 使用Spark读取Hive中的数据 中,我们演示了如何使用python编写脚本,提交到spark,读取并输出了Hive中的数据。在实际应用中,在读取完数据后,通常需要使用pyspark中的API来对数据进行统计或运算,并将结果保存起来。本节将演示这一过程。
张子阳
2018/08/22
2.2K0
使用Spark进行数据统计并将结果转存至MSSQL
实现K-means聚类算法并将其应用于压缩图像。
%% Machine Learning Online Class % Exercise 7 | Principle Component Analysis and K-Means Clustering % % Instructions % ------------ % % This file contains code that helps you get started on the % exercise. You will need to complete the following funct
裴来凡
2022/05/28
3700
实现K-means聚类算法并将其应用于压缩图像。
【SCI】结果部分就该这么写!
Results部分是一篇SCI文章的 “干货” ,这部分的写作推荐清晰简明地描述研究结果即可,听起来十分简单,但分寸的拿捏非常重要。
用户6317549
2019/11/07
1.1K0
[UWP]CompositionLinearGradientBrush加BlendEffect,双倍的快乐
上一篇文章介绍了CompositionLinearGradientBrush的基本用法, 这篇文章再结合BlendEffec介绍一些更复杂的玩法。
dino.c
2019/10/29
4810
[UWP]CompositionLinearGradientBrush加BlendEffect,双倍的快乐
python 列表函数
注意:(1)list1[beg:end]将显示列表的从list1[beg]到list1[end-1]的元素,list1[end]不会显示
全栈程序员站长
2022/09/08
5430
python 列表函数
Python匿名函数/排序函数/过滤函数
  lambda表示的是匿名函数. 不需要用def来声明, 一句话就可以声明出一个函数
py3study
2020/01/15
1.1K0
pandas excel动态条件过滤并保存结果
一、概述 由于业务需求,需要对某个excel数据做查询。其中: excel文件名,不固定 sheet数量,不固定 过滤条件,不固定 二、分析需求 针对以上3个条件,都是不固定的。因此需要设计一个配置文件,内容如下: # 查询条件,多个条件,用逗号分隔 where_dict = {     # excel文件名     "file_name": "456.xlsx",     # 过滤条件     "rules": [         {             "sheet_name": "Sheet1",
py3study
2020/12/28
1.7K0
pandas excel动态条件过滤并保存结果
【Kotlin】函数式编程 ② ( 过滤函数 | predicate 谓词函数 | filter 过滤函数 | 合并函数 | zip 函数 | folder 函数 | 函数式编程意义 )
在上一篇博客 函数式编程 ① 中 讲解了 变换函数 map 函数 与 flatMap 函数 , 本篇博客中着重讲解 过滤函数 和 合并函数 ;
韩曙亮
2023/03/30
2K0
【Kotlin】函数式编程 ② ( 过滤函数 | predicate 谓词函数 | filter 过滤函数 | 合并函数 | zip 函数 | folder 函数 | 函数式编程意义 )
extract函数行结果
当flag为EXTR_PREFIX_SAME时,自动加前缀wx后,wx_b是覆盖前的$b的值。
全栈程序员站长
2022/07/08
3810
extract函数行结果
如何使用Python制作脚本巡检设备,并将结果输出到excel,值得参考!
本脚本使用了 pexpect 库来自动化 Telnet 登录到交换机并执行命令,然后将输出保存到文件中。如果你想要将输出存储到 Excel 文件中,你可以使用 openpyxl 库来实现。
网络技术联盟站
2023/08/22
4290
如何使用Python制作脚本巡检设备,并将结果输出到excel,值得参考!
如何使用Python制作脚本巡检设备,并将结果输出到excel,值得参考!
本脚本使用了 pexpect 库来自动化 Telnet 登录到交换机并执行命令,然后将输出保存到文件中。如果你想要将输出存储到 Excel 文件中,你可以使用 openpyxl 库来实现。
网络技术联盟站
2023/09/05
7500
如何使用Python制作脚本巡检设备,并将结果输出到excel,值得参考!
实现神经网络的反向传播算法,并将其应用于手写数字识别任务。
ex4.m %% Machine Learning Online Class - Exercise 4 Neural Network Learning % Instructions % ------------ % % This file contains code that helps you get started on the % linear exercise. You will need to complete the following functions % in this
裴来凡
2022/05/28
3450
实现神经网络的反向传播算法,并将其应用于手写数字识别任务。
PHP安全函数过滤
表单输入<script>alert(1);</script>后,可以发现<>被转义(当然还可以输入其他的,只要是字符就会转变成HTML实体)
行云博客
2020/07/13
7730
谷歌将AutoML应用于Transformer架构,翻译结果飙升,已开源!
自几年前推出以来,Google的Transformer架构已经应用于从制作奇幻小说到编写音乐和声的各种挑战。重要的是,Transformer的高性能已经证明,当应用于序列任务(例如语言建模和翻译)时,前馈神经网络可以与递归神经网络一样有效。虽然用于序列问题的Transformer和其他前馈模型越来越受欢迎,但它们的架构几乎完全是手动设计的,与计算机视觉领域形成鲜明对比。AutoML方法已经找到了最先进的模型,其性能优于手工设计的模型。当然,我们想知道AutoML在序列域中的应用是否同样成功。
代码医生工作室
2019/06/23
7600
点击加载更多

相似问题

将函数应用于数据帧列表,并将结果写回

13

分段并将函数应用于单个列表

10

通过谓词过滤列表并将结果放入新列表中

114

如何过滤字典并将结果附加到列表中?

21

将函数应用于列表并输出结果

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文