2013-04-16 45 views
1

喜的浮動或INT所以我試圖找到一個列表 的平均我們必須做一個函數,所以我有轉換「[1,2,3,4]」在Python

def avgLst(): 
    'str==>avg of numbers in str' 
    x=input('Please enter a List: ') 

    if len(x)==0: 
     return([]) 

從這一點來說,我遇到了麻煩。 我試圖找到平均我們投入問題的輸入。 像[1,2,3,4]這樣的問題是這個列表是一個字符串,因爲輸入。如何讓列表成爲整數或浮點數列表,然後查找列表的平均值? 謝謝,

+0

你會如何在紙上做這個平均值?另外,你不會從'input'生成一個列表。 – Makoto

+0

是的,我知道,輸入將是一個字符串,我試圖使該字符串變成我可以用來做平均的東西。一旦我得到字符串可用,我可以做其他 – blandman1990

+0

非常新的python和編程一般 – blandman1990

回答

0

您可以處理多種方式解析string數據。我沒有測試此功能的速度,但你可以做到這一點的一個方法是:

def list_avg(str_list): 
    int_list = [float(i.strip('[]')) for i in str_list.split(',')] 
    return sum(int_list)/len(int_list) 

如果我理解正確你的要求,那麼list_avg將在str_list返回float平均整數。

+0

如果數字是兩位數這種方法不會給出預期的結果 –

+0

好,我現在正在編輯它。 – tijko

+0

的作品就像一個魅力,謝謝 – blandman1990

5

您可以使用ast.literal_eval這裏:

In [6]: strs="[1,2,3,4]" 

In [7]: from ast import literal_eval 

In [9]: literal_eval(strs) 
Out[9]: [1, 2, 3, 4] 

幫助(literal_eval)

In [10]: literal_eval? 
Type:  function 
String Form:<function literal_eval at 0x8cb7534> 
File:  /usr/lib/python2.7/ast.py 
Definition: literal_eval(node_or_string) 
Docstring: 
Safely evaluate an expression node or a string containing a Python 
expression. The string or node provided may only consist of the following 
Python literal structures: strings, numbers, tuples, lists, dicts, booleans, 
and None. 
3

可以按如下方式處理您的輸入:

def input_to_list(input_str): 
    input_list = input_str[1:-1].split(",") 
    return map(int, input_list)