我想完成的任务似乎很简单,但是我仍然无法使其正常工作。我有一个2D列表,用于存储实时绘图的一些数据。 2D列表具有4个元素,每个元素本身就是一个列表。 我有一个并行运行的线程来获取数据,每次接收到一组新值时,我都会使用.pop(0)删除每个元素的最旧值(列表中的第一个值),然后使用.append ()包含最新值(列表中的最后一个值)。
可以说我的名单如下:
Data=[[0,1,2,3,4],[0,0,0,0,0],[0,0,0,0,0]]
然后,我期望使用以下命令来弹出每个元素的第一个值:
Data[0].pop(0)
Data[1].pop(0)
Data[2].pop(0)
代码:
x=list(range(5))
y=[0]*5
Data=[x,y,y]
print(f'x is {x} \ny is {y} and Data is {Data}')
print(f'Before pop, Data:{Data}\nData[0]:{Data[0]} \nData[1]:{Data[1]} \nData[2]:{Data[2]}')
a=Data[0].pop(0)
print(f'we pop: {a}')
print(f'First pop, Data:{Data}\nData[0]:{Data[0]} \nData[1]:{Data[1]} \nData[2]:{Data[2]}')
b=Data[1].pop(0)
print(f'we pop: {b}')
print(f'Scond pop, Data:{Data}\nData[0]:{Data[0]} \nData[1]:{Data[1]} \nData[2]:{Data[2]}')
c=Data[2].pop(0)
print(f'we pop: {c}')
print(f'Third pop, Data:{Data}\nData[0]:{Data[0]} \nData[1]:{Data[1]} \nData[2]:{Data[2]}')
我的列表应类似于:[[1,2,3,4],[0,0,0,0],[0,0,0,0]]
但是,在Data[1].pop(0)
之后,不仅弹出了Data [1]中的第一个元素,而且还弹出了Data [2]的元素。
因此,执行了带有.pop的三行之后,列表看起来像:[[1、2、3、4],[0、0、0],[0、0、0]] 我不懂为什么。任何评论或建议都值得欢迎。