我有一个包含列表的列表,每个列表代表一个公司,里面有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)))
但是,为了使结果可用,我需要能够将它们放回到自己的列表中,我不知道该怎么做。
感谢您的阅读,感谢任何帮助。
答案 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)