gpt4 book ai didi

python - 有没有办法在python中创建保持其长度固定的数组?

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:14 24 4
gpt4 key购买 nike

为了在 python 中实时绘制 COM 端口数据,我需要制作一个固定长度的数组,如果收到新值,它将其保留在最后一个索引处,当数组被填充时,在下一次更新时,它会将值转储到第一个索引处.换句话说,它将最新值保留在最后一个索引处并清空第一个索引处的值(以保持长度固定)

最佳答案

你所描述的基本上是一个固定长度的双端队列(通常称为双端队列)。

您可以使用 Python 的内置双端队列:

from collections import deque

d = deque(maxlen=2)

for i in range(10):
d.append(i)
print(d)

# deque([0], maxlen=2)
# deque([0, 1], maxlen=2)
# deque([1, 2], maxlen=2)
# deque([2, 3], maxlen=2)
# deque([3, 4], maxlen=2)
# deque([4, 5], maxlen=2)
# deque([5, 6], maxlen=2)
# deque([6, 7], maxlen=2)
# deque([7, 8], maxlen=2)
# deque([8, 9], maxlen=2)

你也可以使用appendleft代替append:

for i in range(10):
d.appendleft(i)
print(d)

# deque([0], maxlen=2)
# deque([1, 0], maxlen=2)
# deque([2, 1], maxlen=2)
# deque([3, 2], maxlen=2)
# deque([4, 3], maxlen=2)
# deque([5, 4], maxlen=2)
# deque([6, 5], maxlen=2)
# deque([7, 6], maxlen=2)
# deque([8, 7], maxlen=2)
# deque([9, 8], maxlen=2)


或者,如果您想要相反的方式,您可以继承列表并自己实现 append。请注意略有不同的结果:

class MyList(list):
def __init__(self, max_len, *args, **kwargs):
super().__init__(*args, **kwargs)
self.max_len = max_len

def append(self, obj):
if len(self) < self.max_len:
super().append(obj)
else:
self.insert(0, obj) # inserting to the left
self.pop() # deleting the last element on the right

li = MyList(2)

for i in range(10):
li.append(i)
print(li)

# [0]
# [0, 1]
# [2, 0]
# [3, 2]
# [4, 3]
# [5, 4]
# [6, 5]
# [7, 6]
# [8, 7]
# [9, 8]

关于python - 有没有办法在python中创建保持其长度固定的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45410780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com