相关疑难解决方法(0)

为什么Python不适合函数式编程?

我一直认为函数式编程可以用Python完成.因此,我很惊讶Python在这个问题上没有得到很多提及,当提到它时,它通常不是很积极.然而,没有给出很多理由(没有提到模式匹配和代数数据类型).所以我的问题是:为什么Python不适合函数式编程?是否有更多的原因,而不是缺乏模式匹配和代数数据类型?或者这些概念对函数式编程如此重要,以至于不支持它们的语言只能被归类为二级函数式编程语言?(请记住,我在函数式编程方面的经验非常有限.)

python functional-programming

319
推荐指数
9
解决办法
12万
查看次数

Python等效于内联函数或宏

我刚刚意识到这一点

x.real*x.real+x.imag*x.imag
Run Code Online (Sandbox Code Playgroud)

比做的快三倍

abs(x)**2
Run Code Online (Sandbox Code Playgroud)

其中x是一个复数的numpy数组.为了代码可读性,我可以定义一个类似的函数

def abs2(x):
    return x.real*x.real+x.imag*x.imag
Run Code Online (Sandbox Code Playgroud)

它仍然比abs(x)**2快得多,但它是以函数调用为代价的.是否可以内联这样的函数,就像在C中使用宏或使用内联关键字一样?

python optimization inline-functions

49
推荐指数
5
解决办法
4万
查看次数

获取int()和float()函数的函数对象

我想将一个函数传递给Python中的函数.我知道我可以通过将函数名称作为参数来实现,例如:

blah(5, function)
Run Code Online (Sandbox Code Playgroud)

但是,我想将int()函数和float()函数传递给此函数.如果我只是把函数名称放在那里它假定我指的是intfloat类型而不是将字符串转换为整数和浮点数的函数.

有没有办法传递函数而不是类型?

python function

5
推荐指数
1
解决办法
1722
查看次数

将列表转换为嵌套字典

比如我有

x = ['a','b','c']
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为:

y['a']['b']['c'] = ''
Run Code Online (Sandbox Code Playgroud)

那可能吗?

对于后台,我有一个配置文件,其中包含指向某些json数据中某个位置的点符号.我想使用带点的符号字符串来访问json文件中的特定数据.例如,在配置中:

path_to_data = "user.name.first_name"
Run Code Online (Sandbox Code Playgroud)

我希望我的脚本能够认识到:

json_data["user"]["name"]["first_name"]
Run Code Online (Sandbox Code Playgroud)

所以我可以得到first_name字段的值.我将原始字符串转换为列表,现在我不知道如何将其转换为嵌套字典.

编辑:我需要应用dict的现有数据结构.让我们说:

m = {'a': {'b': {'c': 'lolcat'}}}
Run Code Online (Sandbox Code Playgroud)

以便

m['a']['b']['c']
Run Code Online (Sandbox Code Playgroud)

给了我'lolcat'.如果我得到了正确的字典结构(正如一些回复所做的那样),我仍然需要将它应用于现有字典'm'.

所以,再次,我从配置文件中得到这个:

c = 'a.b.c'
Run Code Online (Sandbox Code Playgroud)

我转换成一个列表,认为这将使事情变得更容易:

x = ['a','b','c']
Run Code Online (Sandbox Code Playgroud)

现在我有一个类似json的数据结构:

m = {'a': {'b': {'c': 'lolcat'}}}
Run Code Online (Sandbox Code Playgroud)

所以从'x'生成的嵌套字典应该能够遍历'm'

m['a']['b']['c']
Run Code Online (Sandbox Code Playgroud)

让我成为猫.

python dictionary list

5
推荐指数
1
解决办法
3224
查看次数

如何将'if'语句传递给python方法?

我想将一个可选的'if'语句传递给要执行的python方法.例如,该方法可能会将某些文件从一个文件夹复制到另一个文件夹,但该方法可能采用可选条件.

因此,例如,对方法的一次调用可以说" 如果source.endswith(".exe")将文件从源复制到dest .

下一个调用可能只是无条件地将文件从源复制到目标.

如果今天是星期一,下一个电话可能是将文件从源复制到目的地

你如何将这些条件传递给python中的方法?

python arguments if-statement function

4
推荐指数
2
解决办法
5595
查看次数

不需要返回值时映射

我有一个对象列表,我想更改所有对象的属性值(相同的值 - NewValue).

map()在函数(lambda)没有返回任何值的情况下,是否比正常for循环更有效?

map ( lambda x: x.attribute = NewValue, li)
Run Code Online (Sandbox Code Playgroud)

VS

for i in li:
    i.attribute = NewValue
Run Code Online (Sandbox Code Playgroud)

python

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