1

嗨所以我想找到一个列表的平均值我们必须做一个函数所以我有

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

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

正是从这一点我遇到了麻烦。我试图找到我们投入问题的输入的平均值。类似 [1,2,3,4] 的问题是这个列表是一个字符串,因为输入。如何让列表成为整数或浮点数列表,然后找到列表的平均值?谢谢,

4

4 回答 4

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.
于 2013-04-16T18:41:28.613 回答
3

您可以按如下方式处理您的输入:

def input_to_list(input_str):
    input_list = input_str[1:-1].split(",")
    return map(int, input_list)
于 2013-04-16T18:47:07.690 回答
1

ast(抽象语法树)模块中使用literal_eval() :

>> import ast

>> yrStrList = '[1,2,3,4]'
>> yrList = ast.literal_eval(yrlist)
>> print yrList

[1,2,3,4]

详细信息literal_eval( )

于 2013-04-16T18:41:19.067 回答
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_avgfloat返回str_list.

于 2013-04-16T18:57:32.903 回答