需求:R1曲聂,R2递惋,R3均為3個元素的列表柔滔,對應元素相加,需要滿足關系R1+R2=R3萍虽。分別給定3組R1,R2,R3的可能取值的絕對值睛廊,通過改變這些值的符號,使得滿足R1+R2=R3.
- 完整代碼:
# ************************************************************************
# _*_coding:utf-8_*_
# Author: Pandas120 (微信)
# Desription: R1杉编,R2超全,R3均為3個元素的列表,對應元素相加邓馒,需要滿足關系R1+R2=R3嘶朱。分別給定3組R1,R2,R3的可能取值的絕對值,通過改變這些值的符號光酣,使得滿足R1+R2=R3.
# ************************************************************************
def new_value(R_value):
new_list = []
range_value = [1,-1]
for value in R_value:
for i in range_value:
for j in range_value:
for k in range_value:
value1 = [xx*yy for xx,yy in zip([i,j,k],value)]
if value1 not in new_list:
new_list.append(value1)
return new_list
if __name__=="__main__":
abs_values_R1 = [[1, 2, 1], [2, 2, 1], [1, 4, 1]]
abs_values_R2 = [[1, 0, 1], [0, 2, 1], [1, 2, 1]]
abs_values_R3 = [[1, 0, 2], [0, 2, 2], [1, 2, 2]]
abs_values_R1 = new_value(abs_values_R1)
abs_values_R2 = new_value(abs_values_R2)
abs_values_R3 = new_value(abs_values_R3)
data = ['R1_1,R1_2,R1_3,R2_1,R2_2,R2_3,R3_1,R3_2,R3_3']
for r1_value in abs_values_R1:
for r2_value in abs_values_R2:
for r3_value in abs_values_R3:
if [i + j for i, j in zip(r1_value, r2_value)] ==r3_value:
res = ",".join([str(x) for x in r1_value+ r2_value+r3_value])
data.append(res)
if len(data)==1:
print('沒有匹配的結果J瓒簟!')
else:
outstr = "\n".join(data)
with open('res.csv','w') as f:
f.write(outstr)