小编The*_*eer的帖子

检查字符串是否以列表中的一个字符串结尾

编写以下代码的pythonic方式是什么?

extensions = ['.mp3','.avi']
file_name = 'test.mp3'

for extension in extensions:
    if file_name.endswith(extension):
        #do stuff
Run Code Online (Sandbox Code Playgroud)

我有一个模糊的记忆,for可以避免循环的显式声明并写入if条件.这是真的?

python string list

206
推荐指数
5
解决办法
11万
查看次数

使virtualenv从您的全局站点包继承特定的包

我正在寻找一种方法来制作一个virtualenv,其中只包含基本python安装的一些库(我选择).

更具体一点,我正在尝试在virtualenv的创建过程中将matplotlib导入virtualenv.它无法通过pip或easy_install高效安装,因为它错过了一些fortran编译器库.我到目前为止的方式是手动复制

/usr/lib/python2.7/dist-packages/ to virtualenv_name/lib/python2.7/dist-packages/
Run Code Online (Sandbox Code Playgroud)

但是这可以防止yolk注册manully导入的链接(打印virtualenv中所有当前可用的库).

那么,有没有办法做一个选择性的变体

virtualenv --system-site-packages
Run Code Online (Sandbox Code Playgroud)

python virtualenv

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

Numpy的平均误差?

是否存在numpy中用于计算两个矩阵之间的均方误差的方法?

我试过搜索但没找到.它的名字不同吗?

如果没有,你怎么克服这个?你自己写的还是使用不同的lib?

python arrays numpy mean mean-square-error

62
推荐指数
5
解决办法
12万
查看次数

Python中float的二进制表示(位不是十六进制)

如何将字符串作为32位浮点的二进制IEEE 754表示?

1.00 - >'00111111100000000000000000000000'

python floating-point binary

52
推荐指数
7
解决办法
5万
查看次数

将2d阵列切成较小的2d阵列

有没有办法将ndy中的2d数组切成较小的2d数组?

[[1,2,3,4],   ->    [[1,2] [3,4]   
 [5,6,7,8]]          [5,6] [7,8]]
Run Code Online (Sandbox Code Playgroud)

所以我基本上想要将2x4阵列减少为2个2x2阵列.寻找用于图像的通用解决方案.

python numpy

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

Python float和numpy float32之间的区别

内置float和有numpy.float32什么区别?

a = 58682.7578125
print type(a)
print a
print type(numpy.float32(a))
print numpy.float32(a)
Run Code Online (Sandbox Code Playgroud)

输出:

<type 'float'>
58682.7578125
<type 'numpy.float32'>
58682.8
Run Code Online (Sandbox Code Playgroud)

我在这里发现的numpy.float32是:

float32单精度浮点数:符号位,8位指数,23位尾数

没有找到内置float格式的内容.

python numpy

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

Qt事件循环和单元测试?

我开始尝试在Qt中进行单元测试,并希望听到有关涉及单元测试信号和插槽的场景的评论.

这是一个例子:

我想测试的代码是(m_socket是指向QTcpSocket):

void CommunicationProtocol::connectToCamera()
{
    m_socket->connectToHost(m_cameraIp,m_port);
}
Run Code Online (Sandbox Code Playgroud)

由于这是一个异步调用,我无法测试返回的值.但是,我想测试套接字在成功的connection(void connected ())上发出的响应信号是否实际发出.

我在下面写了测试:

void CommunicationProtocolTest::testConnectToCammera()
{
    QSignalSpy spy(communicationProtocol->m_socket, SIGNAL(connected()));
    communicationProtocol->connectToCamera();
    QTest::qWait(250);
    QCOMPARE(spy.count(), 1);
}
Run Code Online (Sandbox Code Playgroud)

我的动机是,如果响应不会在250毫秒内发生,那就是错误的.

然而,信号永远不会被捕获,我无法确定它是否发射.但我注意到我没有在测试项目的任何地方启动事件循环.在开发项目中,事件循环以main开头QCoreApplication::exec().


总结一下,当单元测试一个依赖于信号和插槽的类时,应该在哪里

QCoreApplication a(argc, argv);
return a.exec();
Run Code Online (Sandbox Code Playgroud)

在测试环境中运行?

qt unit-testing qt4 event-handling event-loop

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

asyncio等待对象 - 基本的例子

我试图了解如何制作一个等待的对象.文档中的定义指出:

返回迭代器的__await__方法的对象.

在该定义的指导下,我编写了示例代码:

import asyncio

async def produce_list():
        num = await Customer()
        print(num)

class Customer(object):

    def __await__(self):
        return iter([1, 2, 3, 4])

loop = asyncio.get_event_loop()
loop.run_until_complete(produce_list())
Run Code Online (Sandbox Code Playgroud)

我期望的流程是:

  1. 事件循环控制produce_list().produce_list()放弃执行num = await Customer().
  2. Customer()执行并返回一个迭代器.因为返回迭代器中的第一个值.Q1:我不清楚为什么num不成为迭代器本身.这也在做什么send
  3. 一旦达到迭代器的最后一个值.num = 4协程的执行继续print(num),并打印值4.

我得到了什么:

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
~/workspace/dashboard/so_question_await.py in <module>()
     16 
     17 loop = asyncio.get_event_loop()
---> 18 loop.run_until_complete(produce_list())

/usr/lib/python3.5/asyncio/base_events.py in run_until_complete(self, future)
    464             raise RuntimeError('Event …
Run Code Online (Sandbox Code Playgroud)

python asynchronous python-3.x async-await python-asyncio

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

写入二进制文件时的开销数据

我想写一个包含16位整数的数组作为文件的原始二进制文件,并尝试使用以下示例:

#  define __int8_t_defined
__intN_t (8, __QI__);
__intN_t (16, __HI__);
__intN_t (32, __SI__);
__intN_t (64, __DI__);

int main(int argc, char *argv[])
{
    FILE * rawf;
    rawf = fopen("./rawPcm","wb");
    int16_t buff[] = {0,0,0};
    fwrite(buff,sizeof(int16_t), sizeof(buff),rawf);
    fwrite(buff,sizeof(int16_t), sizeof(buff),rawf);  
    fclose(rawf);
}
Run Code Online (Sandbox Code Playgroud)

但是,输出包含的不仅仅是零.

$ hexdump -v rawPcm 
0000000 0000 0000 0000 85fd 0804 0001 0000 0000
0000010 0000 85fd 0804 0001                    
0000018
Run Code Online (Sandbox Code Playgroud)

它写0000 0000 0000 85fd 0804 0001的每一次fwrite(buff,sizeof(int16_t), sizeof(buff),rawf);我期望只得到0000 0000 0000.

附加数据代表什么85fd 0804 0001,如何防止它发生?

c

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

python十六进制字符串中0x和\ x的含义是什么?

我正在做一些二进制操作,通常显示为十六进制.我已经看到了0x\x前缀.

在哪种情况下使用?

python numpy

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