TypeError:反復不可能なintオブジェクトを解凍できません

Python报错:TypeError:反復不可能なintオブジェクトを解凍できません

1.問題の説明:
コースを設計するとき、ダイクストラ最短経路検索プロセスを動的に出力する必要があります。プロセス中に、最短経路を検索するプロセスを示すために、ノードとエッジの色を動的に変更する必要があります。片側の色を変更するために書き込むと、エラーTypeError:cannot unpack un-iterableintオブジェクトが表示されました。テストコードは、ソースコードに従って次のように記述されます。

import networkx as nx
import matplotlib.pyplot as plt

G=nx.DiGraph()
G.add_edge(1,2)
G.add_edge(4,3)
G.add_edge(1,4)

colors_node=['']*4  #节点颜色
colors_edge=['']*3  #边的颜色

pos=nx.spring_layout(G)

#初始化边的颜色
for i in range(0,3):
    colors_edge[i]='r'


nx.draw(G,pos=pos,with_labels=True,edge_color=colors_edge)
plt.show()
print(G.edges())
a=G.edges()
print(a[0])

プログラム出力:
ここに画像の説明を挿入
G.edges()は[()]の形式であり、リストに格納されているタプルに似ていますが、以下ではインデックスを使用して指定された値を出力できません。
強制型変換後、インデックスを出力して指定したエッジの色を変更できます(私の考えによれば、特定のエッジの色を変更したい場合は、Gでこのエッジのインデックスを決定する必要があります。どの要素の値で色を変更するかを決定します。エッジに直接色を追加する方法を見つけましたが、ここでエラーを報告する理由がわからないため、この方法を自分で考えました)。
変更後のコードは次のとおりです。

import networkx as nx
import matplotlib.pyplot as plt

G=nx.DiGraph()
G.add_edge(1,2)
G.add_edge(4,3)
G.add_edge(1,4)

colors_node=['']*4  #节点颜色
colors_edge=['']*3  #边的颜色

pos=nx.spring_layout(G)
#初始化节点和边的颜色
for i in range(0,4):
    colors_node[i]='y'
for i in range(0,3):
    colors_edge[i]='r'


nx.draw(G,pos=pos,with_labels=True,node_color=colors_node,edge_color=colors_edge)
plt.show()
#把G.edge()输出的结果转化为list类型,不然无法实现索引(a[0])
a=list(G.edges())
print(a[0])

出力結果は次のとおりです。
ここに画像の説明を挿入
正しい出力インデックス値

おすすめ

転載: blog.csdn.net/m0_47470899/article/details/114149092