我有这个功能:
map(map(fn x =>[x])) [[],[1],[2,3,4]];
Run Code Online (Sandbox Code Playgroud)
哪个产生:
val it = [[],[[1]],[[2],[3],[4]]]
Run Code Online (Sandbox Code Playgroud)
我不明白这个功能是如何工作的.每个地图功能都不需要功能和列表吗?似乎没有足够的参数来实际执行.
如果我跑:
map(fn x =>[x]) [[],[1],[2,3,4]];
Run Code Online (Sandbox Code Playgroud)
我明白了:
val it = [[[]], [[1]], [[2,3,4]]];
Run Code Online (Sandbox Code Playgroud)
这对我来说更有意义,因为它需要列表中的每个元素,并将其包装在另一个列表中.但是当我在其上放置另一张地图时,它会改变输出.任何人都可以向我解释这个吗?谢谢!
我想编写一个尾递归函数,将F#中列表中的所有值乘以2.我知道有很多方法可以做到这一点,但我想知道这是否是一个可行的方法.这纯粹是出于教育目的.我意识到有一个内置功能为我做这个.
let multiply m =
let rec innerfunct ax = function
| [] -> printfn "%A" m
| (car::cdr) -> (car <- car*2 innerfunct cdr);
innerfunct m;;
let mutable a = 1::3::4::[]
multiply a
Run Code Online (Sandbox Code Playgroud)
虽然我怀疑他们是唯一的问题但我得到了两个错误.
在我的第二个匹配条件下,此值不可变
和
该表达式是一个函数值,即缺少参数.它的类型是'列表 - >单位.因为我打电话的时候length a.
我对F#相当新,并且意识到我可能没有正确地调用该函数,但我无法弄清楚为什么.这对我来说主要是一种学习经验,因此解释比修复代码更重要.语法显然已关闭,但我可以将*2映射到列表,只需执行等效操作即可
car = car*2 然后调用列表的cdr上的内部函数.
(define (accumulate op initial sequence)
(if (null? sequence)
initial
(op (car sequence)
(accumulate op initial (cdr sequence)))))
(define (flatmap proc seq)
(accumulate append nil (map proc seq)))
Run Code Online (Sandbox Code Playgroud)
以上是来自 SICP 的代码片段,在 Scheme 中。为什么flatmap需要这个程序?flatmap和 和有map什么区别?
我想知道这样的事情是否可能?
info = arrange_info({|x| [x.name, x.number]}, info_array)
def arrange_info(block, info)
info.map(block).to_h
end
Run Code Online (Sandbox Code Playgroud)
这将允许我通过不同的块以不同的方式排列数组,我现在如何让它不起作用,但是这样的事情可能吗?
我有以下map函数来删除逗号对象中的每个元素(如果存在).
var items = ['mum, dad', 'uncle, dad', 'brother, sister'];
var clean = [];
clean = items.filter(function(item) {
return item.split(',');
});
Run Code Online (Sandbox Code Playgroud)
问题是我没有得到预期的结果.我的clean输出与items输出相同.应该是这样的:
console.log(items) // ['mum, dad', 'uncle, dad', 'brother, sister']
console.log(clean) // ['mum', dad', 'uncle', dad', 'brother', sister']
Run Code Online (Sandbox Code Playgroud)
还有另外一点,我怎么才能得到唯一的值,正如你所看到的,一旦他们被逗号限制,就会重复一些值,比如 dad,我怎么只能保留一个呢?
标题可能听起来很奇怪,但这就是我的意思:
def f(x, y, z):
return a_single_number_from_xyz
l = [(10, 'abc', 'def'), (20, 'efg', 'hij')]
print sum([ret_value_of_f_from_first_tuple, ret_value_of_f_from_second_tuple])
Run Code Online (Sandbox Code Playgroud)
函数 f的三个参数是每个元组的三个元素。现在,我想将函数f应用于列表l 的每个元组,并希望获得这些单个数字的总和。我如何在一个语句中做到这一点?我如何在这里映射函数和使用列表理解?
给定一个模式和一个字符串str,找到是否str遵循相同的模式.
以下是完全匹配,这样在模式中的字母和非空单词之间存在双射str.
示例:
pattern = "abba",str = "dog cat cat dog"应该返回true; dog是a,cat是b和形成abba模式的词.
pattern = "abba",str = "dog cat cat fish"应该返回虚假; 字符串遵循abbc模式.
我的解决方案适用于Python 2:
def wordPattern(self, pattern, str):
s = pattern
t = str.split()
return map(s.find, s) == map(t.index, t)
Run Code Online (Sandbox Code Playgroud)
但我只是想知道为什么这个解决方案在Python 3中不起作用.在那里,False当试图测试上面的例子时,该函数总会返回.有人可以请一些建议吗?
我想用来map从列表的每个元素中减去列表的平均值map。到目前为止,我得到了这个计算平均值的函数:
averageOfList :: [Float] -> Float
averageOfList [] = 0
averageOfList a = ((foldl (+) 0 a) / fromIntegral(length a))
Run Code Online (Sandbox Code Playgroud)
名单是[1.3,1.7,3.3,1.0,3.3]。我究竟如何使用平均函数map从每个元素中减去?
我想只解析标题名称main.c:
#include "foo.h"
#include "bar.h"
#include <stdio.h>
int add(int a,int b){ return a+b; }
int sub(int a, int b){ return a-b; }
int main(){
printf("%i\n",add(1,2));
}
Run Code Online (Sandbox Code Playgroud)
所以我的 perl 脚本如下所示:
#!/usr/bin/perl
open MAIN, $ARGV[0];
@ar = map { /#include "([^"]+)"/ ? $1 : next } <MAIN>;
#this one works (next inside for-loop, not map-loop)
for(<MAIN>){
if(/#include "([^"]+)"/){
push @ar2, $1;
} else {
next;
}
}
print "@ar\n";
print "@ar2\n";
Run Code Online (Sandbox Code Playgroud)
给出错误:
Can't "next" outside a loop block
Run Code Online (Sandbox Code Playgroud)
那么有next …
假设你有一个像这样的数组:
arrayExample = [1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
我想使用 map 函数迭代 arrayExample ,如果所有数字都小于 8,则返回true,否则返回false 。但是,当我这样做时,我得到了一组 true(例如:[true,true,true... 等])
我只能返回 1 个值吗?
到目前为止,这是我的代码:
arrayExample = [1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
我对“map”有点陌生,但我相信它会这样做,因为它为每个元素返回一个值,只是对如何使其返回 1 true或false感到困惑。
map-function ×10
arrays ×3
javascript ×2
python ×2
currying ×1
f# ×1
flatmap ×1
haskell ×1
list ×1
loops ×1
object ×1
perl ×1
python-3.x ×1
ruby ×1
ruby-block ×1
scheme ×1
sicp ×1
sml ×1
smlnj ×1