从 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 更改为:mean、mode、median, min, max 和 range
我刚刚这样做了:
>>>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)
我有一组数据在列表中。我不确定如何制作一个函数来获取该数据的范围和 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 更改为:mean、mode、median, min, max 和 range
我刚刚这样做了:
>>>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)