【问题标题】:Group of list turn into integer output一组列表变成整数输出
【发布时间】:2021-02-08 01:37:07
【问题描述】:

如何将一组列表转换为这段代码的整数输出?

matrix0 = [[3, -13, 9, 3], [-6, 4, 1, -18], [6, -2, 2, 4], [12, -8, 6, 10]]
vector0 = [-19, -34, 16, 26]

matrix1 = [[3, 2, -5], [2, -3, 1], [1, 4, -1]]
vector1 = [0, 0, 4]

gaussy(matrix0, vector0, 4)
gaussy(matrix1, vector1, 3)

我有这样的输出,我想把它变成像 [3,1,-2] 这样的整数...

The solution vector is [3.0000000000000004 ,0.9999999999999991 ,-2.0000000000000013 
                       ,0.9999999999999996 ].
The solution vector is [0.9999999999999999 ,1.0 ,1.0000000000000002 ].

【问题讨论】:

    标签: python list math integer gaussian


    【解决方案1】:

    你可以试试这样的:

    lst = [3.0000000000000004 ,0.9999999999999991 ,-2.0000000000000013
                           ,0.9999999999999996 ]
    lst = [round(elem) for elem in lst]
    
    print(lst)
    

    输出:

    [3, 1, -2, 1]
    

    所以你的最终代码应该是这样的:

    matrix0 = [[3, -13, 9, 3], [-6, 4, 1, -18], [6, -2, 2, 4], [12, -8, 6, 10]]
    vector0 = [-19, -34, 16, 26]
    
    matrix1 = [[3, 2, -5], [2, -3, 1], [1, 4, -1]]
    vector1 = [0, 0, 4]
    
    out_lst1 = [round(elem) for elem in gaussy(matrix0, vector0, 4)]
    out_lst2 = [round(elem) for elem in gaussy(matrix1, vector1, 3)]
    

    【讨论】:

    • 我尝试运行代码并显示“NoneType”对象不可迭代
    • @FairuzAmira gaussy() 函数是否有返回语句?是否达到回报?
    【解决方案2】:

    您可以使用内置的round()map() 函数:

    rounded = map(round, gaussy(matrix0, vector0, 4))
    

    并转换回列表:

    rounded = list(rounded)
    

    然后这些语句可以组合成:

    rounded = list(map(round, gaussy(matrix0, vector0, 4)))
    

    值得注意的是,这是比列表理解更糟糕的解决方案(如 Sushil 的回答所示),因为它需要从地图对象转换为列表对象。性能差异可能可以忽略不计,但这是将函数应用于可迭代对象的两种最常见的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多