从 Python 中的列表获取数据范围

Getting the range of data from a list in Python

我有一组数据在列表中。我不确定如何制作一个函数来获取该数据的范围和 return 元组中的最小值和最大值。

数据:

[1,3,4,463,2,3,6,8,9,4,254,6,72]

我目前的代码:

def getrange(data):
    result=[]
    if i,c in data:
        range1 = min(data)
        range2 = max(data)
        result.append(range1, range2)
    return result 

这是一个非常直接的问题,你已经非常接近了。如果我下面的内容不正确,请编辑您的问题以反映您想要的内容。

试试这个。

def minmax(val_list):
    min_val = min(val_list)
    max_val = max(val_list)

    return (min_val, max_val)

语义

I have a set of data that is in a list.

请注意,您在以自相矛盾的方式使用 python 术语。在python中,既有集合又有列表。我可以告诉你这里的意思是列表,但你将来可能会让人们感到困惑。请记住,在 python 集合中,元组和列表彼此不同。

区别如下(摘自下面 BlackJack 的评论)

Data Type | Immutable | Ordered | Unique Values
===============================================
  lists   |    no     |   yes   |      no
  tuples  |    yes    |   yes   |      no
   sets   |    no     |   no    |      yes

不可变 - 数据类型在实例化后无法更改。

有序 - 数据类型中元素的顺序是固定的。

唯一值 - 数据类型不能有重复值。

我喜欢 NumPy's percentile 一次获得多个百分位数的功能:

import numpy as np
print np.percentile([1,3,4,463,2,3,6,8,9,4,254,6,72], [0, 100])

输出:

[   1.  463.]

(最小值是 0% 百分位数;最大值是 100% 百分位数。)

如果你真的需要元组中的结果,你可以很容易地用 tuple(...) 包装它。

如果您想获取数字的范围,可以使用:

def getrange(numbers):
    return max(numbers) - min(numbers)

我还构建了这段代码,您可以使用它来求平均值:

def average(numbers, type=None):
import statistics
try:
    statistics.mean(numbers)
except:
    raise RuntimeError('An Error Has Occured: List Not Specified (0018)')
if type == 'mean':
    return statistics.mean(numbers)
elif type == 'mode':
    return statistics.mode(numbers)
elif type == 'median':
    return statistics.median(numbers)
elif type == 'min':
    return min(numbers)
elif type == 'max':
    return max(numbers)
elif type == 'range':
    return max(numbers) - min(numbers)
elif type == None:
    return average(numbers, 'mean')
else:
    raise RuntimeError('An Error Has Occured: You Entered An Invalid Operation (0003)')

您需要做的就是键入 average([1, 2, 3]) 以获得 1、2 和 3 的平均数。对于其他命令,执行 average([1, 2, 3, 'median') 这将给出数字的中位数。您可以将 median 更改为:meanmodemedian, min, maxrange

我刚刚这样做了:

>>>data = [1,3,4,463,2,3,6,8,9,4,254,6,72]
>>>min_val = min(data)
>>>max_val = max (data)
>>>range_data = (min_val, max_val)
>>>print(range_data)
(1, 463)