繁体   English   中英

在 python 中划分列表的某些成员

[英]Dividing certain members of a list in python

我有一个由列表列表组成的矩阵,我想将每个子列表后半部分的每个成员除以每个子列表前 3 个成员中的 integer。 这是我的代码:

def matrix():

    a=[[12.0, 0.0, 0.0, 12, 156, -108], [0.0, 2.667, 0.0, -5.333, -77.333, 53.333], [0.0, 0.0, -0.0937, -0.0937, -1.4687, 1.0]]

    for i in range(len(a)):
        a[i] = [v/a[i][i] for v in a[i]]

    return a   

但是,此代码将每个整个子列表除以每个子列表前半部分中的 integer,得到这个 output:

[[1.0, 0.0, 0.0, 1.0, 13.0, -9.0], [0.0, 1.0, 0.0, -1.9996250468691417, -28.996250468691414, 19.99737532808399], [-0.0, -0.0, 1.0, 1.0, 15.674493062966913, -10.672358591248665]]

我只想划分每个子列表的第二部分,而不是前半部分。 我需要获取这个 output,正如您所看到的,每个子列表的前 3 个整数必须保持不变:

[[12,0,0,1,13,-9],[0,2.667,0,-2,-29,20],[0,0,-0.09375,1,15.6667,-10.6667]]

您可以将逻辑分为两个步骤:

  1. 在前三个数字中找到 integer。

  2. 将每个子列表的后半部分除以该数字。

     def matrix(): a = [[12.0, 0.0, 0.0, 12, 156, -108], [0.0, 2.667, 0.0, -5.333, -77.333, 53.333], [0.0, 0.0, -0.0937, -0.0937, -1.4687, 1.0]] for i in range(len(a)): divisor = 0 for j in range(3): if a[i][j]: divisor = a[i][j] break for j in range(len(a[i]) // 2, len(a[i])): a[i][j] = a[i][j] / divisor return a print(matrix())

Output:

[[12.0, 0.0, 0.0, 1.0, 13.0, -9.0], [0.0, 2.667, 0.0, -1.9996250468691417, -28.996250468691414, 19.99737532808399], [0.0, 0.0, -0.0937, 1.0, 15.674493062966913, -10.672358591248665]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM