编写以下代码的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
条件.这是真的?
我正在寻找一种方法来制作一个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) 是否存在numpy中用于计算两个矩阵之间的均方误差的方法?
我试过搜索但没找到.它的名字不同吗?
如果没有,你怎么克服这个?你自己写的还是使用不同的lib?
如何将字符串作为32位浮点的二进制IEEE 754表示?
例
1.00 - >'00111111100000000000000000000000'
有没有办法将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阵列.寻找用于图像的通用解决方案.
内置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
格式的内容.
我开始尝试在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)
在测试环境中运行?
我试图了解如何制作一个等待的对象.文档中的定义指出:
返回迭代器的__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)
我期望的流程是:
produce_list()
.produce_list()
放弃执行num = await Customer()
.Customer()
执行并返回一个迭代器.因为返回迭代器中的第一个值.Q1:我不清楚为什么num
不成为迭代器本身.这也在做什么send
?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) 我想写一个包含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
,如何防止它发生?
我正在做一些二进制操作,通常显示为十六进制.我已经看到了0x
和\x
前缀.
在哪种情况下使用?
python ×8
numpy ×4
arrays ×1
async-await ×1
asynchronous ×1
binary ×1
c ×1
event-loop ×1
list ×1
mean ×1
python-3.x ×1
qt ×1
qt4 ×1
string ×1
unit-testing ×1
virtualenv ×1