2014-09-22 40 views
-2

我得到了以下數據作爲輸出:轉換行和列訪問值數學運算蟒蛇

my_list = [-1.65021 kcal mol-1, -0.0610136 kcal mol-1, -0.00590799 kcal mol-1, -0.0628508 kcal mol-1, -0.00977042 kcal mol-1, -0.0110948 kcal mol-1, -0.0149813 kcal mol-1, 0.00487253 kcal mol-1, 0.0173691 kcal mol-1] 

我想看到像-1.65021 kcal mol-1每個條目,一列的每一排。 e.g:

-1.65021 kcal mol-1, 
-0.0610136 kcal mol-1 
-0.00590799 kcal mol-1 

然後我想訪問所有數字;此時我對這些單位不感興趣。我想將這些值用於數學運算。

我試過這種方式,但它不工作:

y = str(my_list) 
x = y.split() 
z = float(x) 
+0

這個my_list列表是錯誤的,python會立即拋出一個SyntaxError。它應該有列表中的每個項目的引號。 – 2014-09-22 21:24:34

回答

1
my_list = ['-1.65021 kcal mol-1', '-0.0610136 kcal mol-1', '-0.00590799 kcal mol-1', '-0.0628508 kcal mol-1', '-0.00977042 kcal mol-1', '-0.0110948 kcal mol-1', '-0.0149813 kcal mol-1', '0.00487253 kcal mol-1', '0.0173691 kcal mol-1'] 

您可以使用列表理解如下:split每個項目,指數的第一個元素[0]並轉換爲float

[float(i.split()[0]) for i in my_list] 

輸出

[-1.65021, -0.0610136, -0.00590799, -0.0628508, -0.00977042, -0.0110948, -0.0149813, 0.00487253, 0.0173691] 
+0

我需要再次寫循環嗎? – 2014-09-22 19:03:07

+0

將列表理解分配給一個變量,然後您可以遍歷該列表並執行所需的任何計算。 – 2014-09-22 21:27:22

0

什麼你也可以做的就是創建一個發電機,可後面的代碼被重用。

如果項目數很大,那麼發電機的內存影響比列表解析要少。

my_list = [ 
    '-1.65021 kcal mol-1', 
    '-0.0610136 kcal mol-1', 
    '-0.00590799 kcal mol-1', 
    '-0.0628508 kcal mol-1', 
    '-0.00977042 kcal mol-1', 
    '-0.0110948 kcal mol-1', 
    '-0.0149813 kcal mol-1', 
    '0.00487253 kcal mol-1', 
    '0.0173691 kcal mol-1' 
] 

def generator(x): 
    for item in x: 
     yield float(item.split()[0]) 


my_sum = sum(generator(my_list)) 
my_min = min(generator(my_list)) 
my_max = max(generator(my_list)) 

print(my_sum) 
print(my_min) 
print(my_max) 

輸出:

-1.79358728 
-1.65021 
0.0173691 

編輯:

如果您需要打印生成的輸出,必須先將其轉換爲一個元組或列表

print(list(generator(my_list))) 
print(tuple(generator(my_list))) 

輸出:

[-1.65021, -0.0610136, -0.00590799, -0.0628508, -0.00977042, -0.0110948, -0.0149813, 0.00487253, 0.0173691] 
(-1.65021, -0.0610136, -0.00590799, -0.0628508, -0.00977042, -0.0110948, -0.0149813, 0.00487253, 0.0173691) 
+0

如何打印我的清單?打印(發電機(my_list))? – 2014-09-22 22:31:31

+0

在我編輯後回覆上面 – 2014-09-24 20:00:57