Python 给定列表,搜索满足条件的可能取值

需求: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('没有匹配的结果!!')      
    else:        
        outstr = "\n".join(data)
        with open('res.csv','w') as f:
            f.write(outstr)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是函数 我们知道圆的面积计算公式为: S = πr² 当我们知道半径r的值时,就可以根据公式计算出面积。假设我...
    _王子_阅读 3,604评论 0 2
  • 1 前言 OpenGL渲染3D模型离不开空间几何的数学理论知识,而本篇文章的目的就是对空间几何进行简单的介绍,并对...
    RichardJieChen阅读 12,062评论 1 11
  • 一、Python中数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但...
    大嘴蝸牛阅读 4,700评论 0 5
  • mod运算,即求余运算,是在整数运算中求一个整数 x 除以另一个整数y的余数的运算,且不考虑运算的商。在计算机程序...
    充满活力的早晨阅读 13,464评论 0 0
  • 为什么使用函数 我们知道圆的面积计算公式为:S = πr2当我们知道半径r的值时,就可以根据公式计算出面积。假设我...
    Davidham3阅读 6,136评论 0 0