相关疑难解决方法(0)

"收益项目"与返回iter(项目)有什么好处?

在下面的示例中,resp.results是一个迭代器.

版本1:

items = []
for result in resp.results:
     item = process(result)
     items.append(item)
return iter(items)
Run Code Online (Sandbox Code Playgroud)

版本2:

for result in resp.results:
     yield process(result)
Run Code Online (Sandbox Code Playgroud)

返回版本1中的iter(项目)在性能/内存节省方面是否比简单返回项目更好/更差?

在"Python Cookbook"中,Alex表示明确的iter()"更灵活,但不经常使用",但是在版本2中返回iter(items)与yield的优缺点是什么?

另外,对迭代器和/或产量进行单元测试的最佳方法是什么? - 你不能做len(结果)检查列表的大小?

python unit-testing iterator yield

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

如何让django在继续完成与请求相关的任务之前给出HTTP响应?

在我的django活塞API中,我想在调用另一个需要一段时间的函数之前向客户端发出/返回一个http响应.如何使yield产生包含所需JSON的HTTP响应,而不是与生成器对象的创建相关的字符串?

我的活塞处理程序方法如下所示:

def create(self, request):
    data = request.data 

    *other operations......................*

    incident.save()
    response = rc.CREATED
    response.content = {"id":str(incident.id)}
    yield response
    manage_incident(incident)
Run Code Online (Sandbox Code Playgroud)

而不是我想要的响应,如:

   {"id":"13"}
Run Code Online (Sandbox Code Playgroud)

客户端获取如下字符串:

 "<generator object create at 0x102c50050>"
Run Code Online (Sandbox Code Playgroud)

编辑:

我意识到使用yield是错误的方法,实质上我想要实现的是客户端在服务器进入manage_incident()的时间代价高昂的函数之前立即收到响应

django yield

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

有效地迭代python嵌套列表

我正在使用Python进行网络流量监控项目.不熟悉Python,所以我在这里寻求帮助.

简而言之,我正在检查流量和流量,我这样写:

for iter in ('in','out'):
        netdata = myhttp()
        print data
Run Code Online (Sandbox Code Playgroud)

netdata是一个由嵌套列表组成的列表,其格式如下:

[ [t1,f1], [t2,f2], ...]
Run Code Online (Sandbox Code Playgroud)

这里t代表的是时刻,f是流动.但是我只想在这个时刻保留这些f进行内外,我想知道如何获得有效的代码.

经过一些搜索,我认为我需要使用创建流量列表(2个元素),然后使用zip函数同时迭代这两个列表,但是我很难写出正确的列表.由于我的netdata是一个很长的列表,效率也非常重要.

如果有任何令人困惑的事情,请告诉我,我会尽力澄清.感谢帮助

python nested-lists

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

Python 数字序列

我决定不浪费我的暑假开始学习 Python。我想我会开始学习循环技术,所以我想从一个基本的数字列表开始,也就是写一个 for 循环来生成数字 1 - 10。

这就是我所拥有的:

def generateNumber(num):
    i=0 
for i in range(num):
    return i
return i
Run Code Online (Sandbox Code Playgroud)

并且代码不起作用。我想在这样的列表中得到一个输出:

>>> generateNumber(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)

python list sequence

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

所有(列表)都使用短路评估吗?

我希望使用Python all()函数来帮助我计算某些东西,但是如果all()它没有在它命中时就进行评估,那么这个东西可能会花费更长的时间False.我想它可能是短路评估,但我只是想确定.另外,有没有办法告诉Python如何评估函数?

python evaluation short-circuiting

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

函数和生成器的区别?

我查看了问题/sf/ask/2090490251/但它被标记为重复。所以我在这里发布我的答案版本。

原来的问题是:

我正在寻找普通函数和生成器之间的确切区别。我已经用谷歌搜索过了。但所有的结果都令人困惑。我是初学者,所以我期待一些简短而精确的例子。

我试过这个普通函数和生成器函数有什么区别?但没有用。

我已经经历过这个“yield”关键字有什么作用?但这纯粹是在谈论生成器,函数和生成器之间没有任何区别。我需要帮助?

python function generator count python-itertools

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

理解@ gen.coroutine注释

我知道我的问题看起来很广泛,但我希望这个问题的答案能给我正确的方向.我是Tornado框架的新手,基本上我是Python新手.我正在研究这个项目:请你解释几行代码:

@gen.coroutine
def get_me(self):
    raise gen.Return((yield self._api.get_me()))
Run Code Online (Sandbox Code Playgroud)
  • @gen.coroutine注释的用途是什么?
  • raise关键字用于例外,不是吗?为什么我们在这里使用它?
  • 为什么我们以形式归还一切generator.Tornado框架的概念是使用生成器吗?是什么原因?

python tornado

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

Python - 如何在for循环中使用return语句?

首先,我想为糟糕的头衔道歉,但这是我能做的最好的.我试图拍摄很多截图,希望能让它更容易理解.

所以我正在研究一个不和谐的聊天机器人,现在正在开发一个可以作为待办事项清单的功能.我有一个命令将任务添加到列表中,它们存储在dict中.但是我的问题是以更易读的格式返回列表(见图片).

def show_todo():
    for key, value in cal.items():
        print(value[0], key)
Run Code Online (Sandbox Code Playgroud)

任务存储在dict被调用的中cal.但是为了让机器人实际发送消息,我需要使用return语句,否则它只是将它打印到控制台而不是实际的聊天(见图片).

def show_todo():
    for key, value in cal.items():
        return(value[0], key)
Run Code Online (Sandbox Code Playgroud)

以下是我尝试修复它的方法,但由于我使用了返回,for循环无法正常工作.

那么我该如何解决这个问题呢?如何使用return语句将其打印到聊天而不是控制台?

请参阅图片以便更好地理解

python return function python-3.x

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

具有收益的自定义 Keras 数据生成器

我正在尝试创建一个自定义数据生成器,但不知道如何将yield函数与__getitem__方法内部的无限循环结合起来。

编辑:回答后我意识到我使用的代码是Sequence不需要yield声明的。

目前我正在返回多个带有return声明的图像:

class DataGenerator(tensorflow.keras.utils.Sequence):
    def __init__(self, files, labels, batch_size=32, shuffle=True, random_state=42):
        'Initialization'
        self.files = files
        self.labels = labels
        self.batch_size = batch_size
        self.shuffle = shuffle
        self.random_state = random_state
        self.on_epoch_end()

    def __len__(self):
        return int(np.floor(len(self.files) / self.batch_size))

    def __getitem__(self, index):
        # Generate indexes of the batch
        indexes = self.indexes[index * self.batch_size:(index + 1) * self.batch_size]

        files_batch = [self.files[k] for k in indexes]
        y = [self.labels[k] for k in indexes]

        # Generate …
Run Code Online (Sandbox Code Playgroud)

python yield keras tensorflow

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

检查Python中属于Fibonacci数字的输入

我想问一下如何检索出fibo列表列表,然后检查用户的输入值是否在fibo列表中.

    a , b = 1, 1
while num <= sys.maxint:
    fibo == a , b = b, a+b
    if num == (b +a+b):
        print "It is a Fibonacci number"        
        break
    else:
        print "It is not a Fibonacci number"
        break
Run Code Online (Sandbox Code Playgroud)

谢谢!

python

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