相关疑难解决方法(0)

Python:定义自己的运算符?

我想定义自己的运算符.python是否支持这样的事情?

python operators

71
推荐指数
6
解决办法
5万
查看次数

从左到右在python3中的列表上应用操作

有没有办法在列表中实现非懒惰的从左到右调用操作python

例如 scala

 val a = ((1 to 50)
  .map(_ * 4)
  .filter( _ <= 170)
  .filter(_.toString.length == 2)
  .filter (_ % 20 == 0)
  .zipWithIndex
  .map{ case(x,n) => s"Result[$n]=$x"}
  .mkString("  .. "))

  a: String = Result[0]=20  .. Result[1]=40  .. Result[2]=60  .. Result[3]=80
Run Code Online (Sandbox Code Playgroud)

虽然我意识到许多人不喜欢上面的语法,但我喜欢从左到右移动并随时添加任意操作的能力.

for当有三个或更多操作时,python 理解是不容易阅读的.结果似乎是我们需要将所有内容分解成块.

[f(a) for a in g(b) for b in h(c) for ..]
Run Code Online (Sandbox Code Playgroud)

有没有机会提到这种方法?

注意:我尝试了一些库,包括toolz.functoolz.python3懒惰的评估很复杂:每个级别返回一个map对象.此外,它不能显示它可以在输入上操作list.

python functional-programming list operator-precedence

7
推荐指数
1
解决办法
144
查看次数

根据键列表从字典中获取值

我有一个清单。

mapper = {"a": 9, "b": 7}
A = ["a", "b"]
Run Code Online (Sandbox Code Playgroud)

我想得到:

result = [9, 7]
Run Code Online (Sandbox Code Playgroud)

我知道有多种方法可以实现这一目标,例如:

result = [mapper[char] for char in A]
result = list(map(lambda x: mapper[x], A))
Run Code Online (Sandbox Code Playgroud)

对于第二种方式,我们可以使用operator模块而不是使用 lambda 吗?

我找到了一个名为 的方法operator.getitem(),我尝试使用

result = list(map(operator.getitem(mapper), A))
Run Code Online (Sandbox Code Playgroud)

但这会引发异常。

我知道list(map(lambda x: operator.getitem(mapper, x), A))会起作用,但我只想避免使用lambda.

我找到了这个问题,但我没有找到解决方案。

python python-3.x

2
推荐指数
1
解决办法
53
查看次数