使用join

时间:2017-05-06 11:17:15

标签: python

我正在使用双端队列,最后我想弹出项目并将它们添加到字符串中。所以,我尝试了类似的东西:

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

2 个答案:

答案 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)