获取邻接表 python
时间: 2023-12-11 09:33:00 浏览: 31
以下是获取邻接表的Python代码示例:
```python
# 假设我们有一个邻接矩阵A
A = [[0, 1, 1],
[1, 0, 1],
[1, 1, 0]]
# 将邻接矩阵转换为邻接表
adj_list = {}
for i, row in enumerate(A):
adj_list[i] = [j for j in range(len(row)) if row[j] == 1]
# 输出邻接表
print(adj_list)
```
输出结果为:
```
{0: [1, 2], 1: [0, 2], 2: [0, 1]}
```
相关问题
python获取邻接表对应的权值
如果你已经有了一个邻接表,那么权重信息可能已经包含在图中。例如,如果你的邻接表是一个字典,那么每个节点的邻居可以作为该节点的键,邻居的值可以是该节点与邻居之间的权重。
例如,以下是一个简单的无向图的邻接表:
```
graph = {
'A': {'B': 3, 'C': 4},
'B': {'A': 3, 'C': 1},
'C': {'A': 4, 'B': 1}
}
```
在这个例子中,节点 `A` 有两个邻居, `B` 和 `C`,并且与它们之间的边权分别为 3 和 4。同样地,节点 `B` 有邻居 `A` 和 `C`,分别对应权重 3 和 1。节点 `C` 的邻居是 `A` 和 `B`,对应的权重是 4 和 1。
如果你想要访问某个节点的邻居和相应的权重,可以像下面这样做:
```python
node = 'A'
for neighbor, weight in graph[node].items():
print(f"{node} -> {neighbor} ({weight})")
```
这将输出:
```
A -> B (3)
A -> C (4)
```
这个示例遍历了节点 `A` 的邻居,对于每个邻居,打印出它的名称和相应的权重。
请注意,这是一个简单的例子,实际上,邻接表和权重的表示方式可能因应用而异。
python 邻接表
邻接表是一种表示图的数据结构,它使用链表来表示每个顶点连接到的其他顶点。在Python中,可以使用字典来实现邻接表。具体实现方法如下:
1. 创建一个空字典来存储图中的所有顶点及其连接的其他顶点和权重。
2. 创建一个顶点类,其中包含顶点的名称和连接到的其他顶点及其权重。
3. 在顶点类中,使用字典来存储连接到的其他顶点及其权重。
4. 在图类中,使用字典来存储所有顶点及其对应的顶点对象。
5. 在图类中,使用add_vertex方法向图中添加新的顶点。
6. 在图类中,使用add_edge方法向图中添加新的边,即连接两个顶点。
7. 在图类中,使用get_vertex方法获取指定名称的顶点对象。
以下是一个简单的Python实现示例:
```python
class Vertex:
def __init__(self, key):
self.id = key
self.connected_to = {}
def add_neighbor(self, neighbor, weight=0):
self.connected_to[neighbor] = weight
def get_connections(self):
return self.connected_to.keys()
def get_weight(self, neighbor):
return self.connected_to[neighbor]
def __str__(self):
return str(self.id) + ' connected to: ' + str([x.id for x in self.connected_to])
class Graph:
def __init__(self):
self.vert_list = {}
self.num_vertices = 0
def add_vertex(self, key):
self.num_vertices += 1
new_vertex = Vertex(key)
self.vert_list[key] = new_vertex
return new_vertex
def get_vertex(self, n):
if n in self.vert_list:
return self.vert_list[n]
else:
return None
def add_edge(self, f, t, weight=0):
if f not in self.vert_list:
self.add_vertex(f)
if t not in self.vert_list:
self.add_vertex(t)
self.vert_list[f].add_neighbor(self.vert_list[t], weight)
def get_vertices(self):
return self.vert_list.keys()
def __iter__(self):
return iter(self.vert_list.values())
def __str__(self):
s = ''
for v in self:
for w in v.get_connections():
s += f'{v.id} -> {w.id}\n'
return s
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)