【Python -- dict 类】教程文章相关的互联网学习教程文章

c – 如何使用swig Python重载下标运算符【代码】

我有一个包含std :: vector< Foo>的类.其中Foo是一个包含键,值,注释等的类.请注意,我使用向量而不是字典是有原因的. 我在C中重载了下标运算符,使得foos [“Key Name”]将在向量中搜索具有键匹配“Key Name”的Foo对象(其中foos是std :: vector< Foo>). 我使用SWIG为我的库创建一个Python包装器,我真的希望这个下标操作符扩展到Python.换句话说,我希望能够使用foos [“Key Name”]在Python中查找向量中的对象. 有关如何使SWIG识别下...

Python包装到C回调【代码】

尝试创建一个需要在调用C回调时调用的python回调来自Windows环境中的DLL.请查看以下代码以了解该问题.from ctypes import *#---------qsort Callback-------------# IntArray5 = c_int * 5 ia = IntArray5(5,1,7,33,99) libc = cdll.msvcrt qsort = libc.qsort qsort.restype = NoneCMPFUNC = CFUNCTYPE(c_int,POINTER(c_int),POINTER(c_int) ) test = 0 def py_cmp_func(a,b):#print 'py_cmp_func:',a[0],b[0]global testtest = 1...

c++ 调用 python函数,不能直接传入string类型,要变成char *类型的参数

Py_Initialize(); //初始化//必须写 PyRun_SimpleString("import sys"); PyRun_SimpleString("sys.path.append('./')");//这一步很重要,修改Python路径//加载函数所i在文件名 PyObject * pModule = PyImport_ImportModule("pythonmain"); //test:Python文件名,若脚本有错则返回空//加载 名为m的函数 PyObject *pfun = PyObject_GetAttrString(pModule, "m");//传入string类型参数,这里注意一定要声明称 char *类型,不能直接传入...

使用boost :: python从C创建python collections.namedtuple【代码】

我想从boost :: python包装函数返回collections.namedtuple列表,但我不知道如何从C代码创建这些对象.对于其他一些类型,有一个方便的包装器(例如dict),这使得这很简单,但是对于namedtuple来说并不存在.做这个的最好方式是什么? dict列表的现有代码:namespace py = boost::python;struct cacheWrap {...py::list getSources() {py::list result;for (auto& src : srcCache) { // srcCache is a C++ vector// {{{ --> Want to use ...

c – 如何删除使用SWIG生成的Python包装器中的堆积对象?【代码】

我正在开发一个Python模块和一个C库.在C代码中,我有一个函数,它返回一个堆积的对象,如下所示.MyClass* func() {MyClass* myclass = new MyClass();return myclass; }但是当我在Python端使用这个函数时,我无法删除返回的对象.myclass = func() del myclass # still remains in memory有谁能告诉我如何删除Python代码中返回的对象,好吗? 我可以将返回值的类型从MyClass *更改为MyClass,以便我可以避免此内存泄漏.但是我不想触及C代码...

C all_of的Python版本【代码】

有没有更好的方法(使用内置函数)来重写下面的代码:def all_of(iterable, predicate):for elem in iterable:if not predicate(elem):return Falsereturn True解决方法:all是内置的:all(predicate(e) for e in iterable)我不认为定义这样的东西是值得的:def all_of(iterable, predicate):return all(predicate(e) for e in iterable)

(python版)创建两个线程,其中一个输出1-52,另外一个输出A-Z。输出格式要求:12A 34B 56C 78D 依次类推【代码】

文章目录1. 代码实现2. 总结 1. 代码实现 import threading import timedef f1():"""执行f1的时候需要锁住lock1,因此此前lock1必须处于已解锁状态,否则阻塞只有当执行完毕一次f1之后,才能解锁lock2,f2才能继续执行"""for i in range(1, 52, 2):# 锁住lock1,如果此时lock1不是处于未上锁状态,则等待lock1解锁之后才能往下进行lock1.acquire()print(i, end='')print(i+1, end='')# 解锁lock2lock2.release()def f2():"""执行f2...

python – C中的高效数组查找

我正在尝试用C中的自定义语言编写一个简单的语言解释器.由于C的简单性,我想使用C over C. 我不确定如何在C中做的事情是存储变量和变量查找. 我打算将变量存储在一个数组中,但我想我需要一个可变大小的数组. 除了循环遍历数组之外,我也不知道从数组中查找变量的有效方法. 所以我想知道,创建可变大小数组的有效方法是什么? Python或Ruby或Go如何有效地存储和检索变量?解决方法:How does Python or Ruby or Go store and retrieve v...

在c中编写二进制文件并在python中读取【代码】

我想使用c将一系列数字存储到二进制文件中,以便稍后使用python打开.目前我在c中命名为* writer.cpp的脚本如下:#include <fstream>int main() {std::ofstream outFile;outFile.open("binaryFile.bin", std::ios::binary);int number = 0;for (int i=0; i<10; i++){number += i;outFile.write(reinterpret_cast<const char*>(&number), sizeof(int));}outFile.close();return 0; }编译时哪个g++ -o writerTest.x writer.cpp并运行./...

python / numpy生成的二进制文件由C读取【代码】

我在python中创建一个名为random_from_python_int.dat的5 * 7整数矩阵二进制文件,然后我从C读取这个二进制文件.不知何故,我无法得到正确的数字这是我生成此矩阵的python代码:import numpy as np np.random.seed(10) filename = "random_from_python_int.dat" fileobj = open(filename, mode='wb') b = np.random.randint(100, size=(5,7)) b.tofile(fileobj) fileobj.close这将生成一个矩阵[ [ 9 15 64 28 89 93 29][ 8 73 0 4...

在Python中运行C扩展比普通C更快【代码】

我在C中实现了一个Python扩展,发现在Python中执行C函数要比从C main执行C代码快2倍. 但为什么这会更快?我希望普通的C在从Python调用时与从C调用时的性能完全相同. 这是我的实验: >普通C计算代码(简单3用于矩阵 – 矩阵乘法)> Plain C main函数调用mmult()函数> Python扩展包装器来调用mmult()函数>所有时间都完全在C代码中发生 这是我的结果: 纯C – 85us Python扩展 – 36us 继承我的代码: –mmult.cpp ———-#include "m...

如何使用Python protobuf读取二进制C protobuf数据?【代码】

Python protobuf的Python版本仅提供给我们:SerializeAsString()C版本给我们两个:SerializeToArray(...) SerializeAsString()我们以二进制格式写入我们的C文件,我们希望保持这种方式.那说,有没有办法将二进制数据读入Python并解析它就好像它是一个字符串? 这是正确的做法吗?binary = get_binary_data() binary_size = get_binary_size()string = None for i in range(len(binary_size)):string += imessage = new MyMessage() m...

如何在Python C-API中获取当前函数名称?【代码】

我实现了一堆函数,它们是从Python解释器调用的同一个C函数调度的:PyObject * CmdDispatch(PyObject *self, PyObject *args, PyObject *kwargs)出乎意料的是,self是NULL,我需要获取当前正在调用的函数名称.有没有办法获得这些信息? 我有几十个函数都在经历这个例程.此命令将所有选项处理为C映射,并将其传递给每个命令的实现. 更新:http://docs.python.org/extending/extending.html#a-simple-example具体说“self参数指向模块级别...

Ada记录/ C结构类型的Python对应物是什么?【代码】

假设我正在记录数据并希望关联一些数据元素,这样每个记录集总是具有固定的组合,即没有丢失的字段. 我作为程序员的大多数经验都是使用Ada或C/C++变体.在Ada中,我将使用记录类型和聚合赋值,以便在使用新字段更新记录类型时,编译器将通知使用该记录的任何人.在C中,我可能会使用存储类和构造函数来做类似的事情. 在Python中处理类似情况的适当方法是什么?这是一个类是正确答案的情况,还是比Ada记录的重量更轻? 另外一个想法,Ada记录和...

从Python脚本控制C输出【代码】

我这里有点问题.我有一个Python脚本调用从C编译的二进制文件. Python脚本有自己的一组输出(标准输出和错误),这些输出很容易禁用. C二进制文件也有自己的一组输出(标准输出和错误,以及其他输出);来源可以改变,但我不是原作者.这是一个问题,因为我不想在我的最终程序中输出C,而且我也不希望将来的用户需要编辑C源代码. 我希望能够做的是有一些Python方法可以捕获发送到标准输出或错误的C代码输出.这可能吗?如果是这样,有人会指出我正...