查找列表中的所有元素是否相同?

时间:2016-12-22 19:34:44

标签: python list

根据以下情况查找列表中的所有元素是否相同: -

我每隔5分钟获得价格值。前20分钟。我必须将这些值存储在某处以便进一步比较。我正在为此目的创建列表:

initPrice=[]    // create empty list

之后,我使用以下命令将值附加到列表中:

initPrice.append(someValue)

所以直到20分钟,意味着4个值将被附加到列表中。如: -

initPrice=[20,23,20,40]

现在我必须检查列表中的所有元素是否相同。所以我做了 -

if(len(set(initprice))<2):
    print("TRUE")
else:
     print("FALSE")

但是场景就像直播数据一样,所以在每20分钟后,我想在列表上一次又一次地执行相同的任务,而不会增加长度。它首先出现在队列中,所以在每20分钟后,我在更新的值上执行相同的任务。 list.append的唯一问题是它会增加列表大小,这是我不想要的。

就像每5分钟后新值应该存储在一端,旧值应该从另一端移除,这就是为什么我说它看起来更像FIFO机制

5 个答案:

答案 0 :(得分:1)

仅当值不存在时才可以添加到列表中:

if someValue not in initPrice:
    initPrice.append(someValue)

并使用initPrice.pop()删除附加到列表中的第一个值。

如果您不需要订单,请考虑使用套装。另见:Does Python have an ordered set?

答案 1 :(得分:1)

使用使用deque参数初始化的Python maxlen

In [2]: from collections import deque

In [3]: queue = deque(maxlen=4)

In [4]: queue.append(4)

In [5]: queue.append(6)

In [6]: queue.append(5)

In [7]: queue.append(3)

In [8]: queue
Out[8]: deque([4, 6, 5, 3])

In [9]: queue.append(88)

In [10]: queue
Out[10]: deque([6, 5, 3, 88])

答案 2 :(得分:0)

Python有一个可以使用的Queue类。基本上,只要有新值,您就会想要放入队列,但如果您有4个或更多值,请先删除一个值。它可能看起来像这样。 `

text = [ ["A", "B", "C"] ]

你会像这样初始化队列:

if len(initPrice) >= 4:
  initPrice.get()

initPrice.put(someValue)

答案 3 :(得分:0)

我会使用模数来重复使用相同的4个点

prices = [0, 0, 0, 0]
i = 0
while True:
    prices[i%4] = getNewPrice()
    i += 1
    # every 20 minutes
    if (i % 4 == 0):
        # check all same and print
    # sleep 5 minutes

答案 4 :(得分:-1)

Python列表自然是一个堆栈 - 它们支持pop函数。所以如果你想要一个堆栈,那就很简单了:

>>>initPrice = []
>>>initPrice.append(1)
>>>initPrice.append(2)

>>>initPrice.pop()
2
>>>initPrice
[1]

但是,如果您需要队列功能,您仍然可以使用列表。 你只需要切片。正如juanpa.arrivillaga和Udi很快指出的那样,你可以通过将索引0传递给pop函数从前面弹出:

>>>initPrice = []
>>>initPrice.append(1)
>>>initPrice.append(2)

>>>initPrice.pop(0)
1
>>>initPrice
[2]