相当于Python的c++邻接表
Python equivalent to C++ adjacency list
我决定学习Python。我有c++的背景,所以我对Python的理解有一些挑战。我的问题是
我在c++中有以下语法,我正在寻找Python中的等效语法。这只是一段代码。我不确定我应该使用列表还是字典。
int main()
{
...some code...
int** matrix = 0;
buildmatrix(vertices,matrix);
...some more code...
return EXIT_SUCCESS;
}
void buildmatrix(int& vertices,int** &matrix)
{
cout <<"Enter # of vertices -> ";
cin >>vertices;
matrix = new int* [vertices];
for(int i=0; i<vertices; i++)
{
matrix[i] = new int[vertices];
}
...some more code...
}
简而言之,这构建了一个数组的指针数组。让它看起来像一个矩阵。在将此代码转换为Python时使用的最佳数据结构和方法是什么?
你的代码的Python翻译应该是:
def buildmatrix():
vertices = int(raw_input("Enter # of vertices -> ")
matrix = []
for i in range(vertices):
matrix.append([])
# alternatively, matrix = [[] for _ in range(vertices)]
return vertices, matrix
def add_edge(matrix, vertex1, vertex2):
matrix[vertex1].append(vertex2)
matrix[vertex2].append(vertex1)
这是有效的,因为列表的元素可以是什么没有限制。这里,每个元素都是另一个列表,它可以有任意长度。你可以随时改变列表的长度,就像我们在这里使用。append()一样,所以你不需要在邻接表中预先分配空间。
字典是其他语言可能称为关联数组或哈希映射的东西。列表是任意长度的容器。如果需要与数组等价的对象,可以使用列表。
你应该做一个入门Python教程;列表和数组之间的区别是非常基本的,将在这里解释。
c++中的容器仅限于一种类型的对象。std::vector<SomeType>
只能包含类型为SomeType
的元素。一个std::list<SomeOtherType>
只能包含SomeOtherType
类型的元素。std::map<KeyType,ValueType>
只能将KeyType
类型的键映射到ValueType
类型的值。等等。
在python中不是这样的。mixed_up_list = ["a", 1, [2, 3, 4]]
没有任何问题。python中的列表可以包含数字、字符串、元组、列表、字典、对象,简而言之,任何东西。在python中如何使用列表取决于您自己。注意mixed_up_list
中的最后一个元素。这是一个巨蟒列表。你的邻接表可以很容易地在python列表中表示,并且没有你在c++中所担心的所有分配/释放。
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 如何在c++中使用引用实现类似python的行为
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- IPC使用多个管道和分支进程来运行Python程序
- 从python中调用C++函数并获取返回值
- Python 3.7 和 excess_args 的 SWIG 问题
- Python中的for循环与C++有何不同
- 使用Pybind11向Python公开Eigen::张量
- Python str to C++ to Python str
- 如何使用Python从C++中读取谷物序列化数据
- 如何在C++中使用pybind11加载一个pickle python列表
- 如何在c++中使用system()来运行包含空格的python脚本
- python集合的C++等价物是什么.计数器
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 从python调用openMP共享库时,未定义opnMP函数
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 如何将真正的字符串从python c-api转换为python脚本
- Python ctype 'c_char_p' Memory Leak