如何在预定义的集合列表中获得最小值(在python 3.x中)?

如何在预定义的集合列表中获得最小值(在python 3.x中)?,python,python-3.x,Python,Python 3.x,如何在Python3.x中获得预定义集合列表中的最小值 我有一个数据“a”的列表 a = {44.1, 78.2, 74.2, 85.4, 107.6, 167.7, 221.6, 245.2, 299.2, 314.5} 我想得到3个连续数据范围的最小值,从最后三个开始,到前三个数据 最后三个(245.2、299.2、314.5)、下三个(221.6、245.2、299.2)、下三个(167.7、221.6、245.2)的最小值,依此类推,直到前三个(44.1、78.2、74.2)。最小值也

如何在Python3.x中获得预定义集合列表中的最小值

我有一个数据“a”的列表

a = {44.1, 78.2, 74.2, 85.4, 107.6, 167.7, 221.6, 245.2, 299.2, 314.5}
我想得到3个连续数据范围的最小值,从最后三个开始,到前三个数据

最后三个(245.2、299.2、314.5)、下三个(221.6、245.2、299.2)、下三个(167.7、221.6、245.2)的最小值,依此类推,直到前三个(44.1、78.2、74.2)。最小值也应该成为一个列表

这就是我尝试过但失败的地方

i = list(range(-1, -10, -1))
value = min(a[i - 3:i])
print(value)
我犯了这个错误

TypeError: unsupported operand type(s) for -: 'list' and 'int'

在2号线

由于集合是无序的,您应该将
a
改为列表,这是一种有序的数据结构:

>>> a = [44.1, 78.2, 74.2, 85.4, 107.6, 167.7, 221.6, 245.2, 299.2, 314.5]
由于您希望从末尾开始,因此还需要反转此列表:

>>> a = a[::-1]
>>> a 
[314.5, 299.2, 245.2, 221.6, 167.7, 107.6, 85.4, 74.2, 78.2, 44.1]
然后,您可以将列表分为3组,并获得每个组的最小值:

>>> [min(x) for x in zip(a, a[1:], a[2:])]
[245.2, 221.6, 167.7, 107.6, 85.4, 74.2, 74.2, 44.1]

由于集合是无序的,因此应将
a
改为列表,这是一种有序的数据结构:

>>> a = [44.1, 78.2, 74.2, 85.4, 107.6, 167.7, 221.6, 245.2, 299.2, 314.5]
由于您希望从末尾开始,因此还需要反转此列表:

>>> a = a[::-1]
>>> a 
[314.5, 299.2, 245.2, 221.6, 167.7, 107.6, 85.4, 74.2, 78.2, 44.1]
然后,您可以将列表分为3组,并获得每个组的最小值:

>>> [min(x) for x in zip(a, a[1:], a[2:])]
[245.2, 221.6, 167.7, 107.6, 85.4, 74.2, 74.2, 44.1]

基于@RoadRunner答案:

您希望移动最少3个连续数字

a = [44.1, 78.2, 74.2, 85.4, 107.6, 167.7, 221.6, 245.2, 299.2, 314.5]
a.reverse()
[min(a[i:i+3]) for i in range(0, len(a) - 2)]

使用
-2
可以确保始终有3个数字。

基于@RoadRunner答案:

您希望移动最少3个连续数字

a = [44.1, 78.2, 74.2, 85.4, 107.6, 167.7, 221.6, 245.2, 299.2, 314.5]
a.reverse()
[min(a[i:i+3]) for i in range(0, len(a) - 2)]

使用
-2
可以确保始终有3个数字。

首先使用熊猫数据帧。数据帧中的一个操作是“滚动”(每次取X并用它做一些事情)


如果您想从末尾开始,只需反转列表(我知道您有一个set(),但这不是一个好的数据结构)

使用Pandas数据帧开始。数据帧中的一个操作是“滚动”(每次取X并用它做一些事情)


如果您想从末尾开始,只需反转列表(我知道您有一个set(),但这不是一个好的数据结构)

试试下面的代码!我还附上了输出的屏幕截图

a = [44.1, 78.2, 74.2, 85.4, 107.6, 167.7, 221.6, 245.2, 299.2, 314.5]
a.reverse()
ans=[]
for i in range(0,len(a)-2):
  ans.append(min(a[i:i+3]))
print(ans)

试试这段代码!我还附上了输出的屏幕截图

a = [44.1, 78.2, 74.2, 85.4, 107.6, 167.7, 221.6, 245.2, 299.2, 314.5]
a.reverse()
ans=[]
for i in range(0,len(a)-2):
  ans.append(min(a[i:i+3]))
print(ans)
这是一种使用:

瓶颈算法基于Richard Harter的O(n)。O(1)算法是。

这是一种使用:


瓶颈算法基于Richard Harter的O(n)。O(1)算法是。

1。错误消息非常清楚地说明了问题;你试图从列表中减去3,这是没有意义的。阅读
范围
。2.集合不是有序的数据结构,因此整个任务没有多大意义。您有一个继承问题:集合没有顺序-因此您的“前三个”“后三个”没有多大意义。它们在将来可能会成为“保证插入顺序”,但目前这是一个实现细节,不能保证在任何系统上保留所有python实现。错误消息非常清楚地说明了问题;你试图从列表中减去3,这是没有意义的。阅读
范围
。2.集合不是有序的数据结构,因此整个任务没有多大意义。您有一个继承问题:集合没有顺序-因此您的“前三个”“后三个”没有多大意义。它们在将来可能会成为“保证插入顺序”,但目前这是一个实现细节,不能保证在任何系统上保留所有python实现。-谢谢大家!我认为使用dataframe对我来说更容易理解。很抱歉给您添麻烦^谢谢大家!我认为使用dataframe对我来说更容易理解。抱歉给你添麻烦了^_^