我正在使用双端队列,最后我想弹出项目并将它们添加到字符串中。所以,我尝试了类似的东西:
s = str()
for _ in range(n):
s += " ".join(str(q.pop()))
但是,这并没有像我预期的那样在值之间加上空格。复制:
from collections import deque
q = deque()
q.appendleft(1)
q.appendleft(2)
q.appendleft(3)
s = str()
for _in range(3):
s += " ".join(str(q.pop()))
print(s)
按照我的预期打印'123'
而不是'1 2 3'
。我做错了什么?
我正在使用python 3.5
答案 0 :(得分:2)
" ".join()
将迭代中的条目连接在一起,但q.pop()
一次只生成一个项目。
因为str(q.pop)
仍然是可迭代的 - 因为它是一个字符串 - join()
不会抱怨它,只输出每个数字。
如果你有例如17在队列中,然后当它弹出时你会得到:
>>> " ".join(str(q.pop()))
'1 7'
哪会让问题变得更加明显!
所以我建议改为:
from collections import deque
q = deque()
q.appendleft(1)
q.appendleft(2)
q.appendleft(3)
s = " ".join([str(q.pop()) for _ in range(3)])
print(s)
根据双端队列中的条目制作字符串列表,使用列表推导,然后将其与" ".join()
连接。
答案 1 :(得分:1)
from collections import deque
q = deque()
q.appendleft(1)
q.appendleft(2)
q.appendleft(3)
s = str()
for _ in range(3):
s = s + str(q.pop()) + ' '
print(s)