簡體   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