私はサブリストk = [ ]
のリストを持っています。 は、私はサブリストk[0]
とk[1]
を取るするフラグメントを書いて、私は比較して、私はout = [ ]
の新しいリストを取得:リスト内の値がなくなるまでループします
for i in range(len(k[0])):
for j in range(len(k[1])):
r = list(chain(k[0][i],k[1][j]))
j = [i for i, _ in groupby(r)]
if len(j) < len(r):
out.append(j)
私は、このようにリストk
を置き換えたいと思います上記のコードを実行した後:
k = [out, k[2:]]
その後for
ループが再び実行されようとしているが、サブリストはk[2:]
k[0]
と
k[1]
と
私は 'while'と 'try'で何かを試しましたが、今は悪い結果がありました。
そして、これはテストへのコードの大きな部分は、次のとおりです。
import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
from itertools import chain, combinations, groupby
df = pd.read_csv("graph.csv", sep=';', encoding='utf-8')
g = nx.Graph()
g = nx.from_pandas_dataframe(df, 'nodes_1', 'nodes_2')
plt.show()
a1 = pd.Series([0] + df['nodes_2'][df['nodes_2']%2==0].values.tolist())
a2 = pd.Series(df['nodes_2'][df['nodes_2']%2==1].values.tolist())
b1, b2 = a1.apply(g.neighbors), a2.apply(g.neighbors)
c1, d1 = a1.values.tolist(), b1.values.tolist()
c2, d2 = a2.values.tolist(), b2.values.tolist()
e00=[]
for i in range(len(c1)):
for j in range(len(d1[i])):
if d1[i][j]%2==0:
d = [c1[i],d1[i][j]]
e00.append(d)
e01=[]
for i in range(len(c1)):
for j in range(len(d1[i])):
if d1[i][j]%2==1:
d = [c1[i],d1[i][j]]
e01.append(d)
e10=[]
for i in range(len(c2)):
for j in range(len(d2[i])):
if d2[i][j]%2==0:
d = [c2[i],d2[i][j]]
e10.append(d)
e11=[]
for i in range(len(c2)):
for j in range(len(d2[i])):
if d2[i][j]%2==1:
d = [c2[i],d2[i][j]]
e11.append(d)
a00 = pd.DataFrame(e00)
a01 = pd.DataFrame(e01)
a10 = pd.DataFrame(e10)
a11 = pd.DataFrame(e11)
a = input('Write a binary number. \n')
b=[]
for i in range(len(a)-1):
c = a[i:i+2]
b.append(c)
print (b, '\n')
dct = {'00' : e00, '01' : e01, '10' : e10, '11' : e11}
k=[]
for i in b:
y = dct[i]
k.append(y)
out=[]
for i in range(len(k[0])):
for j in range(len(k[1])):
r = list(chain(k[0][i],k[1][j]))
j = [i for i, _ in groupby(r)]
if len(j) < len(r):
out.append(j)
print (k, '\n')
print (out, '\n')
そしてgraph.csv:
nodes_1 nodes_2
0 0 1
1 0 2
2 1 3
3 1 4
4 2 5
5 2 6
6 3 7
7 3 8
8 4 9
9 4 10
10 5 11
11 5 12
12 6 13
13 6 14
は、私は何をしたいですか?
サンプルバイナリ文字列:001101
を入力した後、辞書に割り当てられた値:['00', '01', '11', '10', '01']
を取得します。各文字でa00, a01, a10, a11
は同じデータです。私のループは '00'と一致するデータを受け取り、 '01'の下のデータと比較します。リストout
が作成されます。ご覧のとおり、"11", "10", "01"
の値はまだ使用されていません。したがって、out
リストは比較のために次の値を取得し、前と同じように行います。消耗まで['00', '01', '11', '10', '01']
。 そして、同じループがまだ使われているようにk = [out、k [2:]]を置き換えることを考えていました。
通常は、反復処理中にリストを変更するのは危険です(Python以外の場合)。 Pythonの背後にあるアイデアの1つは、開発時間は処理時間以上の価値があるということです。したがって、CPUを最大限に活用する代わりに、新しいリストを作成する方が良いでしょう。余分なサイクル(およびメモリ)が必要ですが、より堅牢です。 –
1.対応する出力を含む入力を含むサンプルを投稿してください。 2.なぜ「パンダ」にタグがついているのですか? 3.インポートを使用している場合、名前を変更しました(またはインポートしません)。 –
'pandas'にタグを付けると、サンプルデータが追加されます。 – Dark