Python等价于C++;邻接表

Python等价于C++;邻接表,python,c++,matrix,Python,C++,Matrix,我决定学习Python。我有C++背景,所以我在Python上有一些挑战。我的问题是: 我在C++中有以下语法,我在Python中寻找等价物。这只是一段代码。我不确定我应该使用列表还是口述 int main() { ...some code... int** matrix = 0; buildmatrix(vertices,matrix); ...some more code... return EXIT_SUCCESS; } void buildm

我决定学习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...
}
intmain()
{
…一些代码。。。
int**矩阵=0;
构建矩阵(顶点,矩阵);
…更多的代码。。。
返回退出成功;
}
void buildmatrix(整数和顶点,整数**和矩阵)
{
cout>顶点;
矩阵=新整数*[顶点];

for(int i=0;idict是其他语言可能称为关联数组或哈希映射的内容。列表是任意长度的容器。如果需要与数组等效的内容,请使用列表


你应该做一个介绍性的Python教程;列表和数组之间的区别是很基本的,并且将在这里解释。容器中的容器被限制为一种类型的对象。<代码> STD::vector < /C> >只能包含类型<代码> Stutype < /C> >元素。<代码> STD::列表< /C> >只能包含类型< c的元素ode>SomeOtherType

。A
std::map
只能将
KeyType
类型的键映射到
ValueType
类型的值,依此类推


这在python中是不正确的。
mixed\u-up\u-list=[“a”,1,[2,3,4]]
。python中的列表可以包含数字、字符串、元组、列表、dict、对象,简言之,任何内容。如何在python中使用列表取决于您。请注意我的
混合列表中的最后一个元素。
。它是一个python列表。您的邻接列表可以很容易地在python列表中表示,而无需进行所有分配/解除分配对于C++,

,你的代码的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++代码最接近的类比。所以Python中的列表可以做指针数组的指针(例如动态二维数组)。?用Python中的指针来思考可能是错误的;我们使用了引用。但是,是的,列表可以包含任何类型的对象,包括另一个列表。因此列表列表听起来像是解决问题的方法,但不一定是唯一的方法。因此,在插入边后显示矩阵。我可以引用矩阵by:打印矩阵[i][j]?为什么不试试呢,斯科特?