标签: map-function

如何在 Python 中创建自己的 map() 函数

我正在尝试在 python 中创建内置的 map() 函数。这是我的尝试:

def mapper(func, *sequences):
   if len(sequences) > 1:
       while True:
          list.append(func(sequences[0][0],sequences[0][0],))
       return list
   return list
Run Code Online (Sandbox Code Playgroud)

但我真的很困惑,因为如果用户给出例如 100 个参数,我该如何处理这些参数?

python list map-function

4
推荐指数
1
解决办法
6324
查看次数

Python3:内置函数“map”有错误吗?

以下是我使用 Python 3.8.1(在 macOS Mojave、10.14.6 上,以及在其他一些平台上的 Python 3.7(或较旧版本))。我是计算新手,不知道如何请求改进语言,但我认为我发现了内置函数的奇怪行为map

随着代码的next(iter(()))提高,我期望从以下代码中StopIteration得到:StopIteration

tuple(map(next, [iter(())]))

令我惊讶的是,这默默地返回了元组()

StopIteration因此,当命中返回next的“空”迭代器时,地图对象的解包似乎停止了 iter(())。但是,我认为异常处理不正确,因为StopIteration在从列表中选择“空”迭代器(被 命中next)之前没有引发异常。

  1. 我对这种行为的理解正确吗?
  2. 这种行为是有意为之吗?
  3. 这种情况在不久的将来会改变吗?或者我怎样才能得到它?

编辑:如果我以不同的方式解包地图对象,例如 by list、 for 循环、在列表中解包、解包函数参数、 by set、 ,则行为类似dict。所以我相信这不是tuple,但这map是错误的。

编辑:实际上,在 Python 2 (2.7.10) 中,“相同”代码会引发 StopIteration. 我认为这是理想的结果(除了map在这种情况下不返回迭代器)。

python behavior built-in python-3.x map-function

4
推荐指数
1
解决办法
490
查看次数

在 Rust 中将结构的 Vec 映射到结构的另一个 Vec,无需克隆

我使用具有以下结构的库:

struct KeyValue1 {
    key: Vec<u8>,
    value: Vec<u8>,
}

fn get() -> Vec<KeyValue1> { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

我需要将此向量转换为具有以下结构的几乎相似的向量:

struct KeyValue2 {
    key: Vec<u8>,
    value: Vec<u8>,
}
Run Code Online (Sandbox Code Playgroud)

为了能够从一个向量转换为另一个向量,我目前使用以下代码:

let convertedItems = items.iter().map(|kv| -> KeyValue2{
  key: key.clone(),
  value: value.clone()
}).collect()
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但它克隆了两个载体,效率很低。我不再需要原始items向量,因此我想将所有权从 转移KeyValue1KeyValue2,但我还没有找到方法来做到这一点。

struct closures iterator rust map-function

4
推荐指数
1
解决办法
2999
查看次数

使用python的lambda,map的高效方法

我需要在Bigtable(db)中存储一个很大的整数列表.为了提高效率,我将它们存储为两个连续项之间的差异.

例如:

 original_list = [1005, 1004, 1003, 1004, 1006] 

存储上面的列表(实际上包含超过1000k的项目)为

start = 1005
diff = [-1, -1, 1, 2]

我能管理得最近的是,

ltp = [start]
map(lambda x: ltp.append(ltp[-1] + x), tick)

我正在寻找一种有效的方法将其转换回原始列表.

python performance lambda list map-function

3
推荐指数
2
解决办法
7122
查看次数

将Array.map与新的Array构造函数一起使用

我试图使用new Array()构造函数,map以创建一个单行代码,创建一个元素列表.像这样的东西:

let arr = new Array(12).map( (el, i) => {
  console.log('This is never called');
  return i + 1;
});
Run Code Online (Sandbox Code Playgroud)

阅读文档,这种行为是有道理的.

基本上,docs表示即使对于数组中声明的未定义值,也会执行map的回调,但是在创建像之前的代码之类的空数组时则不行.

所以这应该工作:

var arr = new Array(12);

for(let i = 0; i < arr.length ; i++){
  arr[i] = undefined;
}

let list = arr.map( (e, i) => {
  console.log(i + 1);
  return i + 1;
});
Run Code Online (Sandbox Code Playgroud)

所以,我们也可以这样做:

let newArray = (length) => {
  let myArray = new Array(length);
  for(let i = 0; i …
Run Code Online (Sandbox Code Playgroud)

javascript arrays map-function

3
推荐指数
3
解决办法
1391
查看次数

了解Python地图功能+范围

我试图理解这些代码行之间的区别:

list(''.join(map(lambda x: str(x * 3), range(1, 4))))
Run Code Online (Sandbox Code Playgroud)

出:['3', '6', '9']正如所料.

然而:

list(''.join(map(lambda x: str(x * 5), range(1, 4))))
Run Code Online (Sandbox Code Playgroud)

产出['5', '1', '0', '1', '5'],而我预计:['5','10','15']

以同样的方式

[x for x in map(lambda x: str(x * 5), range(1, 4))]
Run Code Online (Sandbox Code Playgroud)

输出['5','10','15'].

这有什么不对?

python python-3.x map-function

3
推荐指数
1
解决办法
3364
查看次数

如何在Julia中使用map时知道迭代器的索引

我有一个数组数组,称为y:

y=Array(Vector{Int64}, 10)
Run Code Online (Sandbox Code Playgroud)

它基本上是一维数组(其中10个)的列表,每个1维数组的长度为5.以下是它们如何初始化的示例:

for i in 1:10
    y[i]=sample(1:20, 5)
end
Run Code Online (Sandbox Code Playgroud)

每个一维阵列包括5点之间随机取样的整数120.

现在我施加的映射函数,其中对于每个在这些1维阵列的y,不包括从该数字120:

map(x->setdiff(1:20, x), y)
Run Code Online (Sandbox Code Playgroud)

不过,我想,以确保在应用的功能y[i],如果输出setdiff(1:20, y[i])包括i,i从结果中排除.换句话说,我想要一个像...一样的功能

setdiff(deleteat!(Vector(1:20),i) ,y[i])
Run Code Online (Sandbox Code Playgroud)

但随着map.

主要是我的问题是你是否可以访问map函数中的索引.

PS,我知道怎么做comprehensions,我想知道是否有可能用地图做.

理解方式:

[setdiff(deleteat!(Vector(1:20), index), value) for (index,value) in enumerate(y)]
Run Code Online (Sandbox Code Playgroud)

julia map-function

3
推荐指数
1
解决办法
562
查看次数

将字符串映射到对列表中

我有一个for循环遍历一个字符串并返回每个字符对和下一个字符:

>>> word = 'abcdef'
>>> for i in range(len(word)-1):
...     print word[i:i+2]
...
ab
bc
cd
de
ef
Run Code Online (Sandbox Code Playgroud)

是否可以使用地图/滤镜组合来编写它?我在弄清楚如何获得下一个角色而不是使用时遇到了问题i+2.

我试图将这个词传递两次,将它们映射到一起,如下所示:

>>> word = 'abcdef'
>>> map(lambda x, y: x+y, word, word[1:])
Run Code Online (Sandbox Code Playgroud)

但我不确定如何避免str和None的连接错误:

>>> map(lambda x, y: x+y, word, word[1:])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
TypeError: cannot concatenate 'str' and 'NoneType' objects
Run Code Online (Sandbox Code Playgroud)

python python-3.x map-function

3
推荐指数
1
解决办法
217
查看次数

使用`array.some()`而不是boolean返回一个元素

我正在尝试使用一个array.some函数来迭代一些数据并返回我field的if语句成功.

相反,我发现的是,我得到一个布尔返回,true而不是实际变量(包含元素的详细信息).

for (var index in allFields) {
      const invalidField = allFields[index].some(function (field){
        if (!validation.getIn([index,field.dataset.fieldKey,'isValid'])) {
          return field;
        }
      });
      if (invalidField) {
        return invalidField;
      }
    }
Run Code Online (Sandbox Code Playgroud)

我的代码循环allFields,其中包含索引下的字段列表.然后它将每个fieldKey数据与另一组数据进行比较validation.

field包含一个元素.我希望返回,field但是当我检查时,invalidField我得到的true不是元素

javascript arrays map-function

3
推荐指数
1
解决办法
2973
查看次数

在这种情况下如何使用mapM_

我正在尝试在不同的行上打印自相关结果的不同组成部分:

import Data.Vector as V
import Statistics.Autocorrelation
import Data.Typeable

sampleA = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0, 4]

main = do
    let res = autocorrelation $ V.fromList sampleA
    putStr "Type of result of autocorrelation test: "
    print $ typeOf res
    print res
    -- Prelude.mapM_ print res      -- not working; 
Run Code Online (Sandbox Code Playgroud)

输出为:

Type of result of autocorrelation test: ((Vector Double),(Vector Double),(Vector Double))

([1.0,2.5e-2,-0.45,-0.325,0.5,0.125,-0.15],[1.0,-1.3255000000000001,-1.4039375473415425,-1.442999810318651,-1.5311377955236107,-1.5364636906417393,-1.544097864842309],[1.0,1.0755000000000001,1.1539375473415425,1.192999810318651,1.2811377955236107,1.2864636906417393,1.294097864842309])
Run Code Online (Sandbox Code Playgroud)

但是,如果取消注释最后一行,则会出现错误:

• No instance for (Foldable ((,,) (Vector Double) (Vector Double)))
    arising from a use of …
Run Code Online (Sandbox Code Playgroud)

polymorphism haskell types foldable map-function

3
推荐指数
1
解决办法
71
查看次数