【问题标题】:Using deque insert() to merge two lists?使用 deque insert() 合并两个列表?
【发布时间】:2019-09-26 13:33:42
【问题描述】:

我正在尝试将点列表插入双端队列,但我无法将其保持为连续列表:

from collections import deque

pts= deque()
pts = [1, 5]
new_pts = [2, 3, 4]

pts.insert(1,new_pts)

输出:

[1,[2, 3, 4], 5]

期望的输出:

[1,2,3,4,5]

这行得通:

[pts.insert(1,pt) for pt in reversed(new_pts)]

但恐怕我把事情复杂化了。

【问题讨论】:

  • 实际输出:[[2, 3, 4], 1, 5].
  • 已修复。谢谢。

标签: python list insert deque


【解决方案1】:

您需要使用 extendleft() 将多个值添加到队列的开头。

 pts.extendleft(new_pts)

【讨论】:

  • 零是一个错字(我的错)。在双端队列中第一个或最后一个位置以外的位置插入通常表明它不是正确使用的数据结构
  • Alain,我也在想,不幸的是,pop 和 append 速度在程序的其余部分中非常有用。我会继续挖掘,谢谢:)
【解决方案2】:

你可以使用简单的切片:

pts[1:1] = new_pts

代码

pts = [1, 5]
new_pts = [2, 3, 4]

pts[1:1] = new_pts
print(pts)
# [1, 2, 3, 4, 5]

【讨论】:

  • 因为它是双端队列而不是我得到的列表:TypeError: can only assign an iterable
猜你喜欢
  • 1970-01-01
  • 2014-03-19
  • 2012-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-30
相关资源
最近更新 更多