编写一个将输入的图形转化为二维数组,并且图形节点顺序编号,非图形位点编号为0的python程序
时间: 2023-09-11 11:05:09 浏览: 92
Python reshape的用法及多个二维数组合并为三维数组的实例
### 回答1:
。
下面是一个将输入的图形转化为二维数组,并且图形节点顺序编号,非图形位点编号为0的python程序:
def graph_to_array(graph):
"""
将输入的图形转化为二维数组,并且图形节点顺序编号,非图形位点编号为0
:param graph: 一个图形
:return: 一个二维数组
"""
# 用于存储图形节点编号
nums = 1
# 用于存储二维数组
arr = []
# 遍历图形
for row in graph:
# 用于存储一行数据
temp_arr = []
for node in row:
if node:
# 如果是图形节点,则编号
temp_arr.append(nums)
nums += 1
else:
# 如果是非图形位点,则编号为0
temp_arr.append(0)
arr.append(temp_arr)
return arr
### 回答2:
下面是一个将输入的图形转换为二维数组并对图形节点进行顺序编号的Python程序:
```python
def convert_to_array(input_graph):
rows = len(input_graph)
cols = len(input_graph[0])
graph_array = [[0 for _ in range(cols)] for _ in range(rows)]
node_count = 1
for i in range(rows):
for j in range(cols):
if input_graph[i][j] == 1:
graph_array[i][j] = node_count
node_count += 1
return graph_array
# 示例输入图形
input_graph = [[1, 1, 0, 0],
[0, 1, 1, 0],
[0, 0, 1, 0]]
# 调用函数转换图形为二维数组
graph_array = convert_to_array(input_graph)
# 打印转换后的二维数组
for row in graph_array:
print(row)
```
在这个程序中,我们首先定义了一个`convert_to_array`函数,该函数的输入参数是一个表示图形的二维列表。我们通过获取输入图形的行和列数来创建一个相同维度的二维列表`graph_array`,初始值全部设置为0。
然后,我们使用两个嵌套的`for`循环遍历输入的图形。如果当前遍历到的元素的值为1,代表这个元素是图形中的一个节点,我们将对应位置的`graph_array`元素设置为`node_count`,然后`node_count`自增1。
最后,程序返回转换后的二维数组`graph_array`。
在示例中,输出的二维数组为:
```
[1, 2, 0, 0]
[0, 3, 4, 0]
[0, 0, 5, 0]
```
其中非图形节点的位置被标记为0,图形节点按照顺序编号。
### 回答3:
下面是一个将输入的图形转化为二维数组的示例Python程序,并对图形节点进行顺序编号,非图形位点的编号为0。
```python
def convert_to_array(graph):
rows = len(graph)
cols = len(graph[0])
node_index = 1
node_map = {} # 用于存储图形节点及其编号的字典
result = []
for i in range(rows):
row = []
for j in range(cols):
if graph[i][j] == 1: # 如果是图形节点
row.append(node_index)
node_map[node_index] = (i, j) # 将节点及其坐标添加到字典中
node_index += 1
else: # 如果是非图形位点
row.append(0)
result.append(row)
return result, node_map
# 示例输入
graph = [
[1, 1, 0, 0],
[1, 0, 1, 1],
[0, 1, 0, 0],
[0, 0, 0, 1]
]
array, node_map = convert_to_array(graph)
print("转化后的二维数组:")
for row in array:
print(row)
print("图形节点及其编号:")
for node, index in node_map.items():
print("节点{}位于坐标{}".format(node, index))
```
运行以上程序,将得到如下输出结果:
```
转化后的二维数组:
[1, 2, 0, 0]
[3, 0, 4, 5]
[0, 6, 0, 0]
[0, 0, 0, 7]
图形节点及其编号:
节点1位于坐标(0, 0)
节点2位于坐标(0, 1)
节点3位于坐标(1, 0)
节点4位于坐标(1, 2)
节点5位于坐标(1, 3)
节点6位于坐标(2, 1)
节点7位于坐标(3, 3)
```
以上程序首先遍历输入的图形,并判断每个节点是否为图形节点。对于图形节点,将其编号存储在二维数组对应位置,并将节点及其坐标存储在字典 `node_map` 中。对于非图形位点,则在二维数组对应位置存储为0。最后返回转化后的二维数组和图形节点及其编号的字典。
阅读全文