小编Hov*_*tar的帖子

lambda函数访问外部变量

我想玩匿名函数,所以我决定做一个简单的寻找者.这里是:

tests = []
end = int(1e2)
i = 3
while i <= end:
    a = map(lambda f:f(i),tests)
    if True not in a:
        tests.append(lambda x:x%i==0)
        print i
    print tests
    print "Test: "+str(i)
    print str(a)
    i+=2
Run Code Online (Sandbox Code Playgroud)

然而,我发现了什么,就是ilambda x:x%i==0每次访问,而我希望它是一个字面上的数字.我怎么能让它变成lambda x:x%3==0呢?

python scope

16
推荐指数
2
解决办法
2万
查看次数

检查两个Python函数是否相等

我想知道如何检查两个功能是否相同.一个例子是(lambda x: x) == (lambda y: y)评估为真.据我所知,Python将检查函数是否占用内存中的相同位置,但不检查它们是否具有相同的操作.我知道拥有这个功能似乎不切实际.

另一个解决方案是我可以在函数上运行的一些方法来查看它包含的内容或它的工作原理.所以(lambda x: x).what()这将返回方法的工作方式,可能是在字典或其他东西.

我想要一个答案,但我怀疑这是可能的.

python lambda function

14
推荐指数
2
解决办法
8783
查看次数

列表中的Python函数

所以今天在计算机科学中我问过将函数用作变量.例如,我可以创建一个函数,例如returnMe(i)并创建一个用于调用它的数组.喜欢h = [help,returnMe],然后我可以说h1,它会打电话returnMe("Bob").对不起,我对此感到有些兴奋.我的问题是有没有一种调用方式,h.append(def function)并定义一个只存在于数组中的函数?

编辑:

这是我用这个写的一些代码!所以我刚刚用这个解决方案完成了一个很棒的FizzBu​​zz,非常感谢你!这是代码的例子:

funct = []
s = ""

def newFunct(str, num):
    return (lambda x: str if(x%num==0) else "")

funct.append(newFunct("Fizz",3))
funct.append(newFunct("Buzz",5))

for x in range(1,101):
    for oper in funct:
        s += oper(x)
    s += ":"+str(x)+"\n"

print s
Run Code Online (Sandbox Code Playgroud)

python functional-programming list

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

什么类型是NULL?

我想知道Null是什么类型的.这可能是重复的,但我一直在搜索上获得有关void类型的信息.也许更好的方法是可以为任何类型函数返回NULL吗?例如:

int main(){
    dosomething();
    return NULL;
}
Run Code Online (Sandbox Code Playgroud)

那样有用吗?

c null

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

dir里面的功能

Python有一个很好的功能,它提供了一个对象的内容,就像调用它的所有方法和现有变量一样dir().但是,当在函数中调用dir时,它只查看函数的范围.因此,调用dir()函数具有与在函数外调用函数不同的值.例如:

dir()
> ['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
def d():
  return dir()
d()
> []
Run Code Online (Sandbox Code Playgroud)

有没有办法可以改变d中dir的范围?

python scope

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

PHP,Radio Buttons返回,而不是值

对不起,如果这是一个非常简单的问题,我只是在学习php,但我一直在编写一个可以创建测验的脚本,而现在html讨厌我.当我单击一个单选按钮并提交我的表单时,结果始终是按钮打开,而不是我指定的值.以下是我的代码的摘录:

echo '<form action="index.php" method="get">';
for ($i=0; $i<$_SESSION["fsize"];$i++)
{
    echo 'Type of Answer for Question ' . $i + 1 . ": <br> ";
    echo '<input type="radio" name="f' . $i . ' value="radio">Radio Buttons <br>';
    echo '<input type="radio" name="f' . $i . ' value="text">Text area <br>';
    echo '<input type="radio" name="f' . $i . ' value="Checkboxes">Checkboxes <br>';
Run Code Online (Sandbox Code Playgroud)

我的页面的html是非常不完整的,由我的php生成的是:

<html>
<body>
<form action="index.php" method="post">
Number of questions: 
<input type="number" name="fsize">
<input type="submit">
</form>
<form action="index.php" method="get"> 
1: 
<br> 
<input type="radio" name="f0 value="radio"> …
Run Code Online (Sandbox Code Playgroud)

php radio-button

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

Python Map()反向

是否有一个函数,它接受一个函数列表和一个输入,并在输入上输出函数列表?

所以喜欢map,但倒退:

>>>map(lambda x: 2*x,[1,2,3,4,5,6,7,8,9])
[2, 4, 6, 8, 10, 12, 14, 16, 18]
>>>reverseMap([lambda x: x**2,lambda x: x**3],3)
[9,27]
Run Code Online (Sandbox Code Playgroud)

python

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

MATLAB强制函数输出n个参数

在matlab中是否有办法强制函数输出一定数量的参数?例如,这是matlab的作用:

function [a,b,c] = practice
    if nargout >=1
        a =1;
    end
    if nargout >=2
        b=2;
    end
    if nargout ==3
        c = 3;
    end
end

d(1:3) = practice()
% d = [1 1 1]
Run Code Online (Sandbox Code Playgroud)

我想要:d(1:3)= practice()%d = [1 2 3]

我可以得到这种行为,而不需要说[d(1),d(2),d(3)] = practice()

matlab

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

exec将一个函数添加到一个类中

所以我看了类似的问题,我找到了一些解决方案,但我不知道如何做到这一点.

我想要做的是从字符串向类中添加一个方法.我可以使用该setattr()方法执行此操作,但这不会让我self在额外方法中用作属性.这是一个例子:(我为变量名称道歉,当我嘲笑一个想法时,我总是使用yolo)

class what:
    def __init__(self):
        s = 'def yolo(self):\n\tself.extra = "Hello"\n\tprint self.extra'
        exec(s)
        setattr(self,"yolo",yolo)

what().yolo()
Run Code Online (Sandbox Code Playgroud)

返回:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: yolo() takes exactly 1 argument (0 given)
Run Code Online (Sandbox Code Playgroud)

如果s = 'def yolo():\n\tself.extra = "Hello"\n\tprint self.extra' 那时我得到这个结果:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 2, in yolo
NameError: global name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)

这实际上意味着我不能动态地为类创建方法,我知道这是不好的做法和unpythonic,因为这些方法无法访问类的其余部分可以访问的变量.

我感谢任何帮助.

python exec setattr

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

Python函数调用中的增量值

所以我一直在探索线程,我想知道在python中是否有像++那样的++模拟.本质上,我想调用一个线程,并在调用线程时,增加一个值.所以类似于thread.start_new_thread(function, (variable++,))

我寻找其他问题,我有点怀疑这是可能的,但任何帮助都表示赞赏.

我正在玩的具体代码是这样的:

import thread

def isprime(x):
global list
for i in range(3, x-1,2):
    if x % i == 0:
        return
print x
list.append(x)


n = 1000000
i=3
list = [2]
while i < n:
    try:
        thread.start_new_thread(isprime,(i,))
        i+= 2
    except:
        pass

print sorted(list)

print len(list)
Run Code Online (Sandbox Code Playgroud)

python multithreading

0
推荐指数
1
解决办法
2059
查看次数