gpt4 book ai didi

python - 以相反顺序打印队列中的小组数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:39 25 4
gpt4 key购买 nike

我有一个包含以下元素的队列:

1 None 2 3 None 4 5 6 7 None 8 9 10 11 12 13 14 15

这里 None 只做分隔符的工作,仅此而已。

现在我想像这样打印输出:

8 9 10 11 12 13 14 15
4 5 6 7
2 3
1

我能够打印这个输出:

15 14 13 12 11 10 9 8 
7 6 5 4
3 2
1

从右侧遍历队列。

这是代码:

length = len(sequenced_que)
for i in range(0, length):
temp = sequenced_que.pop()
if temp is None:
print()
else:
print(temp.data, end=" ")


8 9 10 11 12 13 14 15
4 5 6 7
2 3
1

上述期望的输出可以通过使用临时堆栈来实现。我可以将元素压入堆栈,直到遇到 None,然后开始将它们弹出。

但这需要 O(n) 的额外空间。

我只需要一个高效的算法而不是使用临时堆栈。您可以使用队列和列表的所有属性。

谢谢你:)

最佳答案

您可以使用 itertools.groupby在所需元素处“拆分”数组。

import itertools

data = [1, None, 2, 3, None, 4, 5, 6, 7, None, 8, 9, 10, 11, 12, 13, 14, 15]
# Break the array into subarrays at None
blocks = [list(v) for k, v in itertools.groupby(data, lambda e: e is None) if not k]
# Reverse the subarrays
blocks.reverse() # or as a new list: rev_blocks = blocks[::-1]

在上面之后,blocks 等于[[8, 9, 10, 11, 12, 13, 14, 15], [4, 5, 6, 7], [2, 3], [1]]。如果你想以相同的格式打印这些子数组:

for arr in blocks:
print(*arr, sep=' ')

关于python - 以相反顺序打印队列中的小组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45962858/

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