簡體   English   中英

在Python中將“ [1,2,3,4]”轉換為浮點數或整數

[英]converting a '[1,2,3,4]' to a float or int in python

嗨,所以我試圖找到一個列表的平均值。

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

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

從這一點來看,我遇到了麻煩。 我試圖尋找我們投入到問題中的平均意見。 像[1,2,3,4]之類的問題是此列表由於輸入而為字符串。 如何獲取列表為整數或浮點數的列表,然后查找列表的平均值? 謝謝,

您可以在此處使用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.

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

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

ast(抽象語法樹)模塊中使用literal_eval()

>> import ast

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

[1,2,3,4]

有關literal_eval( ) 詳細信息

您可以通過多種方式處理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平均值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM