Python:将值添加到列表,然后将此列表附加到列表

时间:2017-10-17 14:52:35

标签: python list

我有一个包含列表的列表,每个列表代表一个公司,里面有EBITDA值。现在我想获取返回的日志并使用以下命令创建一个包含所有日志返回的新列表:

ln(ebitda t / ebitda t-1)

所需的结果将是列表中的列表,它将每个公司的结果保持在一起,如下所示:

[[0.69314718055994529, 0.40546510810816438, 0.28768207245178085], [0.18232155679395459, 0.15415067982725836, 0.13353139262452257]]

但到目前为止我得到了:

[0.69314718055994529, 0.40546510810816438, 0.28768207245178085, 0.18232155679395459, 0.15415067982725836, 0.13353139262452257]

我在SO上找到了循环遍历每个列表的方法并进行如下计算:

from itertools import zip_longest

import numpy as np

l = [[1, 2, 3, 4], [5, 6, 7, 8]]

logs = []
for num in l:
    for x, y in zip_longest(num[1:], num[0:-1]):
        logs.append(np.log((x/y)))

但是,为了使结果可用,我需要能够将它们放回到自己的列表中,我不知道该怎么做。

感谢您的阅读,感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

试试这个:

override func viewDidLoad() {
    super.viewDidLoad()
    DispatchQueue.global().async(execute: {
        print("teste")
            print("main thread")
            self.getWeather(city: "Minsk")
        print("Hello")

    })
    print("working")
}

func getWeather(city: String) {

    let cityEscaped = city.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlHostAllowed)

    let path = "http://samples.openweathermap.org/data/2.5/weather?q=Minsk&appid=..." // appid removed for the sake of privacy
    let url = URL(string: path)
    let session = URLSession.shared

    let task = session.dataTask(with: url!) { (data: Data?, response: URLResponse?, error: Error?) in
        let json = JSON(data!)
        let lon = json["coord"]["lon"].double
        let lat = json["coord"]["lat"].double
        let temp = json["main"]["temp"].double
        let name = json["name"].string
        let desc = json["weather"][0]["description"].string

        print("Lat: \(lat!) lon:\(lon!) temp: \(temp!) city: \(name!)")
    }

    task.resume()
}

答案 1 :(得分:0)

这是你所拥有的更清晰的版本,但我不理解将它们带回自己的列表的说法。也许迭代l2就是你想要的?

import numpy as np

l = [[1, 2, 3, 4], [5, 6, 7, 8]]
def f(num):
      return [np.log(num[i+1]/float(num[i])) for i in xrange(len(num)-1)]
l2 = [f(num) for num in l]

for logren in l2:
      print(logren)