【发布时间】:2015-01-16 12:32:48
【问题描述】:
我很难弄清楚如何从列表中找到最小值 例如
somelist = [1,12,2,53,23,6,17]
如何通过定义 (def) 函数找到此列表的最小值和最大值
我不想使用内置函数min
【问题讨论】:
我很难弄清楚如何从列表中找到最小值 例如
somelist = [1,12,2,53,23,6,17]
如何通过定义 (def) 函数找到此列表的最小值和最大值
我不想使用内置函数min
【问题讨论】:
from __future__ import division
somelist = [1,12,2,53,23,6,17]
max_value = max(somelist)
min_value = min(somelist)
avg_value = 0 if len(somelist) == 0 else sum(somelist)/len(somelist)
如果要手动查找最小值作为函数:
somelist = [1,12,2,53,23,6,17]
def my_min_function(somelist):
min_value = None
for value in somelist:
if not min_value:
min_value = value
elif value < min_value:
min_value = value
return min_value
Python 3.4 引入了statistics 包,它提供了mean 和其他统计信息:
from statistics import mean, median
somelist = [1,12,2,53,23,6,17]
avg_value = mean(somelist)
median_value = median(somelist)
【讨论】:
返回元组中的最小值和最大值:
def side_values(num_list):
results_list = sorted(num_list)
return results_list[0], results_list[-1]
somelist = side_values([1,12,2,53,23,6,17])
print(somelist)
【讨论】:
0,最大值位于索引 length(反之亦然)。排序后,无需使用min() 或max() 来查找这些值。
只有老师才会要求你做这种傻事。 您可以提供预期的答案。或者一个独特的解决方案,而班上的其他人会(打哈欠)一样......
from operator import lt, gt
def ultimate (l,op,c=1,u=0):
try:
if op(l[c],l[u]):
u = c
c += 1
return ultimate(l,op,c,u)
except IndexError:
return l[u]
def minimum (l):
return ultimate(l,lt)
def maximum (l):
return ultimate(l,gt)
解决方案很简单。用它来让自己远离显而易见的选择。
【讨论】:
list=[]
n = int(input("Enter the length of your list: "))
for i in range (1,n+1):
a=int(input("Enter the %d number: " %i ))
list.append(a)
min=list[0]
max=list[0]
for i in range(1,n):
if max<list[i]:
max=list[i]
if min>list[i]:
min=list[i]
print(" %d is the biggest number " %max)
print(" %d is the smallest number " %min)
【讨论】:
鉴于您的列表:somelist = [1,12,2,53,23,6,17],首先,使用 Pandas 将其设为 DataFrame。
然后就可以在DF上使用describe()方法了。
代码:
import pandas as pd
somelist = [1,12,2,53,23,6,17]
somelist_df = pd.DataFrame(somelist)
somelist_df.describe()
输出:
count 7.000000
mean 16.285714
std 18.052833
min 1.000000
25% 4.000000
50% 12.000000
75% 20.000000
max 53.000000
【讨论】: