2011-04-12 38 views
0

可能重複:
using functions to display numbers in a list在python-顯示功能攝氏

x = [30,34,40,36,36,28,29,32,34,44,36,35,28,33, 
    29,40,36,24,26,30,30,32,34,32,28,36,24,32] 

def fahrenToCel(x): 
    return (x - 32) * (5/9) 


print fahrenToCel(x) 

我知道我已經問了好幾次,但我仍然有問題。我只需要使用一個函數來獲取以攝氏度顯示的數字列表。這是我必須做的最後一部分,但我無法弄清楚。請幫忙

+0

請註明使用[功課]標籤你的功課。此外,隨意嘗試更多的東西,而不是簡單地輸入一行代碼並在這裏提問。你可以嘗試幾行代碼的組合。你可以試驗。 – 2011-04-13 03:46:19

回答

2

除非x是一個numpy數組,python將不知道如何迭代x中的值。您需要循環遍歷x中的值並將每個元素傳遞到fahrenToCel()並將返回的值放在新列表中,或者讓fahrenToCel()接受一個列表並在內部執行循環並返回一個新列表。

你可能想看看蟒蛇教程的以下章節:

http://docs.python.org/tutorial/controlflow.html

或尋找如何通過列表迭代其他例子。

更新例如:

def stupidfunc(y): 
    return y 

a = [1,2,3,4,5] 
b = [stupidfunc(x) for x in a] 

def stupidfunc2(y): 
    return [stupidfunc2(x) for x in y] 

a = [1,2,3,4,5] 
b = stupidfunc2(a) 
+0

你能給我舉個例子嗎,我不完全明白你在說什麼 – golbin45 2011-04-12 23:33:00

4
x = [30,34,40,36,36,28,29,32,34,44,36,35,28,33, 
    29,40,36,24,26,30,30,32,34,32,28,36,24,32] 

def fahrenToCel(x): 
    return (x - 32) * (5.0/9) # 5.0 to make result float (you can explicitly convert to float as well) 


print [fahrenToCel(item) for item in x] 
+1

你也可以用'from __future__ import division'來得到'int/int = float'的行爲。 – Fenikso 2011-04-13 05:46:10

2

會使用map(fahrenToCel, x),你呢?

x = [30,34,40,36,36,28,29,32,34,44,36,35,28,33, 29,40,36,24,26,30,30,32,34,32,28,36,24,32] 

def fahrenToCel(f_temp): 
    return (f_temp - 32) * (5.0/9) 

celsius_list = map(fahrenToCel, x) 

順便說一句,請確保你寫5.0/9fahrenToCel功能,因爲5/9 == 0


閱讀map function in python doc

+0

好吧我知道了。非常感謝你們 – golbin45 2011-04-12 23:39:29