相关疑难解决方法(0)

收益慢于回报.为什么?

我写了两个具有相同功能的函数f和g

def f(l, count):
    if count > 1:
        for i in f(l, count-1):
            yield i + 1
    else:

        yield from l

for i in f(range(100000),900):
    pass
print('f')
Run Code Online (Sandbox Code Playgroud)

def g(l, count):
    if count > 1:
        tmp = []
        for i in g(l, count-1):
            tmp.append(i+1)
        return tmp
    else:
        return l
for i in g(range(100000),900):
    pass
print('f')
Run Code Online (Sandbox Code Playgroud)

而我认为f shuold会更快但是在运行时g会更快

时间为g

real    0m5.977s
user    0m5.956s
sys     0m0.020s
Run Code Online (Sandbox Code Playgroud)

f的时间

real    0m7.389s
user    0m7.376s
sys     0m0.012s
Run Code Online (Sandbox Code Playgroud)

python yield

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

如何在python中使用yield函数

语法错误:外部函数“ yield”

>>> for x in range(10):
...     yield x*x
... 
  File "<stdin>", line 2
SyntaxError: 'yield' outside function
Run Code Online (Sandbox Code Playgroud)

我该怎么办?当我尝试在for循环中使用简单yield时。

python python-3.x

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

发电机功能如何在内部工作?

下面是一个发电机功能.

def f():
   x=1
   while 1:
      y = yield x
      x += y
Run Code Online (Sandbox Code Playgroud)

这个生成器function(f)是否在内部实现,如下所示?

class f(collections.Iterable):
   def __init__(self):
      self.x = 1
   def __iter__(self):
      return iter(self)
   def __next__(self):
      return self.x
   def send(self, y):
      self.x += y
      return self.next()
Run Code Online (Sandbox Code Playgroud)

编辑:

是我的问题的答案.

python generator

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

防止函数在`for`循环中首先不返回`return`

我有一个功能来检查列表中的"负","正"和"零"值.以下是我的功能:

def posnegzero(nulist):
    for x in nulist:
        if x > 0:
            return "positive"
        elif x < 0:
            return "negative"
        else:
            return "zero"
Run Code Online (Sandbox Code Playgroud)

但是当我运行此函数时,它会在检查列表中第一个数字的值后停止.例如:

>>> posnegzero([-20, 1, 2, -3, -5, 0, 100, -123])
"negative"
Run Code Online (Sandbox Code Playgroud)

我希望它继续整个列表.在上面的函数中,如果我改变了returnto的每个实例print,那么它会做它应该做的事情,但是现在我不希望它None在函数完成时说出来.我错在哪里的想法?

python list python-2.7

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

返回只能在一段代码中使用一次?

我正在学习python,我无法围绕书中的一段代码:

def find_value(List, value):

    for i in range(len(List)):
        if List[i] == value:
            return i

    return -1
Run Code Online (Sandbox Code Playgroud)

我已经尝试运行代码,如果值在其中则返回索引,如果不是则返回-1,但我不明白是因为'return -1'在for循环之外和if语句,每次执行代码时都不应该运行吗?或者只返回一次,第一次被调用?

我想在继续之前确保理解这个概念.提前致谢

python return

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

生成器表达式如何在 python 内部工作?

我已经尝试过以下代码:

result = (x for x in range(3))


for y in result:
    print(y)
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

0
1
2
Run Code Online (Sandbox Code Playgroud)

但是当我使用此代码时:

result = (print(x) for x in range(3))


for y in result:
    print(y)
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

0
None
1
None
2
None

    Can anyone explain, Why this **None** is coming in output in second code?
Run Code Online (Sandbox Code Playgroud)

python expression generator

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

你如何使用python(手动)反转字符串中的单词?

可能重复:
反转字符串中单词的顺序

我知道python已经为此提供了一些方法,但我正在尝试理解当你只使用列表数据结构时这些方法如何工作的基础知识.如果我有一个字符串hello world并且我想创建一个新字符串world hello,我该怎么想?

然后,如果我可以使用新列表,我将如何避免制作新列表并在适当的位置执行此操作?

python

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

请在此示例中解释生成器机制

有人可以解释为什么它只打印3行而不是24行的机制.我知道它是由于生成器功能耗尽,但如何?

def counter_gen(size):
    cur=1
    while cur <= size:
        yield cur
        cur +=1

c1=counter_gen(8)
c2=counter_gen(3)

for x in c1:
    for y in c2:
        print x,y
Run Code Online (Sandbox Code Playgroud)

python generator

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

从 Python 类中提取数据

我编写了一个计算冥王星轨道并设置动画的程序,并开始使用类重写它,因为这似乎是将更多行星引入模拟的明智方法。即有一个定义物理的类,然后输入特定的行星数据以获得轨道数据。

    class Planet(object):
        m_sun = 1.989*(10**30)
        G = 6.67*(10**-11)
        dt = 1
        coords = []
        def __init__(self, x, y, vx, vy, m):
            self.x = x
            self.y = y
            self.vx = vx
            self.vy = vy
            self.m = m


        def genData(self):
            while self.dt < 100000000:
                r = ((self.x)**2 + (self.y)**2)**0.5
                a = ((self.G*self.m_sun)/r**2)
                ax = -a*((self.x)/r)
                ay = -a*((self.y)/r)
                self.vx = self.vx + ax*self.dt
                self.vy = self.vy + ay*self.dt
                self.x = self.x + self.vx*self.dt
                self.y = self.y + self.vy*self.dt
                coord = (self.x, …
Run Code Online (Sandbox Code Playgroud)

python class python-2.7

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

python中的生成器错误

我仍然是python中的新生成器.我自己尝试了一个并尝试了一些非常简单的事情:

def fib(a):
...     if a==0 or a==1:return 1
...     yield fib(a-1)+fib(a-2)
print(list(fib(5))
Run Code Online (Sandbox Code Playgroud)

这段代码给了我这个错误:

TypeError: unsupported operand type(s) for +: 'generator' and 'generator'
Run Code Online (Sandbox Code Playgroud)

不能以这种方式使用发电机吗?

python generator fibonacci python-3.x

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

标签 统计

python ×10

generator ×4

python-2.7 ×2

python-3.x ×2

class ×1

expression ×1

fibonacci ×1

list ×1

return ×1

yield ×1