yieldPython中关键字的用途是什么?它有什么作用?
例如,我试图理解这段代码1:
def _get_child_candidates(self, distance, min_dist, max_dist):
if self._leftchild and distance - max_dist < self._median:
yield self._leftchild
if self._rightchild and distance + max_dist >= self._median:
yield self._rightchild
Run Code Online (Sandbox Code Playgroud)
这是来电者:
result, candidates = [], [self]
while candidates:
node = candidates.pop()
distance = node._get_dist(obj)
if distance <= max_dist and distance >= min_dist:
result.extend(node._values)
candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
return result
Run Code Online (Sandbox Code Playgroud)
_get_child_candidates调用该方法时会发生什么?列表是否返回?单个元素?它又被召唤了吗?后续通话何时停止?
1.代码来自Jochen Schulz(jrschulz),他为度量空间创建了一个很棒的Python库.这是完整源代码的链接:模块mspace.
我是一个蟒蛇初学者,我想计算pi.我尝试使用Chudnovsky算法,因为我听说它比其他算法更快.
这是我的代码:
from math import factorial
from decimal import Decimal, getcontext
getcontext().prec=100
def calc(n):
t= Decimal(0)
pi = Decimal(0)
deno= Decimal(0)
k = 0
for k in range(n):
t = ((-1)**k)*(factorial(6*k))*(13591409+545140134*k)
deno = factorial(3*k)*(factorial(k)**3)*(640320**(3*k))
pi += Decimal(t)/Decimal(deno)
pi = pi * Decimal(12)/Decimal(640320**(1.5))
pi = 1/pi
return pi
print calc(25)
Run Code Online (Sandbox Code Playgroud)
出于某种原因,与可接受的值相比,此代码产生pi的vakue,最多只有15位小数.我试图通过提高精度值来解决这个问题; 这会增加位数,但只有前15位仍然准确.我尝试改变计算算法的方式,但它也没有用.所以我的问题是,是否可以对此代码进行一些操作以使其更准确或者我是否必须使用其他算法?我很感激这方面的帮助,因为我不知道如何在python中使用这么多位数.我希望能够控制程序确定和显示的(正确)数字的数量 - 无论是10,100,1000等.
我需要一些帮助来计算Pi.我正在尝试编写一个将Pi计算为X位数的python程序.我已经尝试过python邮件列表中的几个,这对我的使用来说很慢.我已经阅读了有关Gauss-Legendre算法的内容,我尝试将其移植到Python但没有成功.
我正在读这里,我很感激我输入错误的地方!
输出:0.163991276262
from __future__ import division
import math
def square(x):return x*x
a = 1
b = 1/math.sqrt(2)
t = 1/4
x = 1
for i in range(1000):
y = a
a = (a+b)/2
b = math.sqrt(b*y)
t = t - x * square((y-a))
x = 2* x
pi = (square((a+b)))/4*t
print pi
raw_input()
Run Code Online (Sandbox Code Playgroud) 我想在我的笔记本电脑上同时运行两个 python 脚本,而不会降低它们的计算速度。
我搜索并看到了这个问题,说我们应该使用bash文件。我已经搜索过,但我不明白我应该做什么以及如何使用这种称为bash.
python script1.py &
python script2.py &
Run Code Online (Sandbox Code Playgroud)
我对此缺乏经验,我需要您的专业建议。我不明白如何做到这一点,在哪里以及如何做到这一点。我正在使用 Windows 64 位。
最好的事物
PS: The answer I checked the mark is a way to run in parallel two tasks, but it does not decrease the calculation time for two parallel tasks at all.
我的代码:
def calc_pi(acc):
pos = False
sum = 4.0
for i in range(2, acc):
if not pos:
sum -= 4.0/(2*i-1)
pos = True
else:
sum += 4.0/(2*i-1)
pos = False
return float(sum)
print(calc_pi(5000))
Run Code Online (Sandbox Code Playgroud)
当然,我正在尝试计算一个pi,超过10个后点数.但是Python似乎要回到10.有一种简单的方法可以阻止它这样做吗?像一百万个后点数字?
谢谢!