如何概括更多变量的代码?
How to to generalizing of the code for more variables?
在构成图表的代码中,我有四个变量具有相似条件的块。
区块 1:
a =''.join(map(str, ['a1' if x%4==0 else 'a2' if x%4==1 else 'a3' if x%4==2 else 'a3' if x%4==3 else 'a4' for x in comb_3bit[i]]))
区块 2:
good=[]
all=[]
for j in range(comb_3bit_without[0].count('a1')):
k = j*4
all.append(k)
good.append(k)
for j in range(kombinacje_3bit_bez_powtorzen[0].count('a2')):
k = j*4 + 1
all.append(k)
good.append(k)
for j in range(kombinacje_3bit_bez_powtorzen[0].count('a3')):
k = j*4 + 2
all.append(k)
good.append(k)
for j in range(kombinacje_3bit_bez_powtorzen[0].count('a4')):
k = j*4 + 3
all.append(k)
good.append(k)
区块 3:
if len([i for i in good2 if i%4==0 ])==0:
good2.insert(0,0)
if len([i for i in good2 if i%4==1 ])==0:
good2.insert(1,1)
if len([i for i in good2 if i%4==2 ])==0:
good2.insert(2,2)
if len([i for i in good2 if i%4==3 ])==0:
good2.insert(3,3)
区块 4:
p0 = [i for i in good2 if i%4 ==0 ]
p1 = [i for i in good2 if i%4 ==1 ]
p2 = [i for i in good2 if i%4 ==2 ]
p3 = [i for i in good2 if i%4 ==3 ]
z0 = p0[-1]
z1 = p1[-1]
z2 = p2[-1]
z3 = p3[-1]
第 5 块:
g.add_node(z0+h*4)
g.add_node(z1+h*4)
g.add_node(z2+h*4)
g.add_node(z3+h*4)
good2.append(z0+h*4)
good2.append(z1+h*4)
good2.append(z2+h*4)
good2.append(z3+h*4)
第 6 块:
a1 = [i for i in good2 if i%4 ==0 ]
a2 = [i for i in good2 if i%4 ==1 ]
a3 = [i for i in good2 if i%4 ==2 ]
a4 = [i for i in good2 if i%4 ==3 ]
sources = {
'a1': a1,
'a2': a2,
'a3': a3,
'a4': a4,
}
不过,现在我想概括一下上面的片段,这样所有的代码都可以很容易地用于更多的变量a[i]
。如果有任何帮助和指导,我将不胜感激。
您只是在寻找功能吗?例如,您的第二个块可以重写如下:
def appender(all_list, good_list, array, count_by, increment):
for j in range(array[0].count(count_by)):
k = j*4 + increment
all_list.append(k)
good_list.append(k)
return all_list, good_list
good = []
all = []
appender(all, good, comb_3bit_without, "a1", 0)
appender(all, good, kombinacje_3bit_bez_powtorzen, "a2", 1)
appender(all, good, kombinacje_3bit_bez_powtorzen, "a3", 2)
appender(all, good, kombinacje_3bit_bez_powtorzen, "a4", 3)
您的其他块也可以重写以使用函数。
这里要实现的关键思想是,如果您有重复的代码,您可能可以使用函数来简化代码重用。
在构成图表的代码中,我有四个变量具有相似条件的块。
区块 1:
a =''.join(map(str, ['a1' if x%4==0 else 'a2' if x%4==1 else 'a3' if x%4==2 else 'a3' if x%4==3 else 'a4' for x in comb_3bit[i]]))
区块 2:
good=[]
all=[]
for j in range(comb_3bit_without[0].count('a1')):
k = j*4
all.append(k)
good.append(k)
for j in range(kombinacje_3bit_bez_powtorzen[0].count('a2')):
k = j*4 + 1
all.append(k)
good.append(k)
for j in range(kombinacje_3bit_bez_powtorzen[0].count('a3')):
k = j*4 + 2
all.append(k)
good.append(k)
for j in range(kombinacje_3bit_bez_powtorzen[0].count('a4')):
k = j*4 + 3
all.append(k)
good.append(k)
区块 3:
if len([i for i in good2 if i%4==0 ])==0:
good2.insert(0,0)
if len([i for i in good2 if i%4==1 ])==0:
good2.insert(1,1)
if len([i for i in good2 if i%4==2 ])==0:
good2.insert(2,2)
if len([i for i in good2 if i%4==3 ])==0:
good2.insert(3,3)
区块 4:
p0 = [i for i in good2 if i%4 ==0 ]
p1 = [i for i in good2 if i%4 ==1 ]
p2 = [i for i in good2 if i%4 ==2 ]
p3 = [i for i in good2 if i%4 ==3 ]
z0 = p0[-1]
z1 = p1[-1]
z2 = p2[-1]
z3 = p3[-1]
第 5 块:
g.add_node(z0+h*4)
g.add_node(z1+h*4)
g.add_node(z2+h*4)
g.add_node(z3+h*4)
good2.append(z0+h*4)
good2.append(z1+h*4)
good2.append(z2+h*4)
good2.append(z3+h*4)
第 6 块:
a1 = [i for i in good2 if i%4 ==0 ]
a2 = [i for i in good2 if i%4 ==1 ]
a3 = [i for i in good2 if i%4 ==2 ]
a4 = [i for i in good2 if i%4 ==3 ]
sources = {
'a1': a1,
'a2': a2,
'a3': a3,
'a4': a4,
}
不过,现在我想概括一下上面的片段,这样所有的代码都可以很容易地用于更多的变量a[i]
。如果有任何帮助和指导,我将不胜感激。
您只是在寻找功能吗?例如,您的第二个块可以重写如下:
def appender(all_list, good_list, array, count_by, increment):
for j in range(array[0].count(count_by)):
k = j*4 + increment
all_list.append(k)
good_list.append(k)
return all_list, good_list
good = []
all = []
appender(all, good, comb_3bit_without, "a1", 0)
appender(all, good, kombinacje_3bit_bez_powtorzen, "a2", 1)
appender(all, good, kombinacje_3bit_bez_powtorzen, "a3", 2)
appender(all, good, kombinacje_3bit_bez_powtorzen, "a4", 3)
您的其他块也可以重写以使用函数。
这里要实现的关键思想是,如果您有重复的代码,您可能可以使用函数来简化代码重用。