在Python中打印不带空格的列表

8
我正在编写一个将十进制数转换为七进制数的程序,所以我写了以下代码:

num = int(raw_input(""))
mod = int(0)
list = []
while num> 0:
    mod = num%7
    num = num/7
    list.append(mod)
list.reverse()
for i in range (0,len(list)):
    print list[i],

但如果这个数字是210,它会打印出4 2 0,我该如何去掉空格呢?


可能是重复问题:如何将列表转换为字符串 - fredtantini
9个回答

14

您可以使用列表推导式结合join方法:

>>> l=range(5)
>>> print l
[0, 1, 2, 3, 4]
>>> ''.join(str(i) for i in l)
'01234'

此外,不要将list作为变量名使用,因为它是一个内置函数。


嗨,谢谢,它运行得很好,但我是新手,不明白.join如何工作,你能给我一个简单的解释吗? - maria alejandra escalante
2
@mariaalejandraescalante,它以字符串作为分隔符,在列表中连接元素,并在它们之间使用分隔符。所以这个','.join(['a', 'b', 'c'])将会得到'a,b,c' - pavel_form

8
在Python 3中,您可以像这样操作:
print(*range(1,int(input())+1), sep='')

如果输入为4,您的输出将如下所示:

1234


4

将列表转换为字符串,并替换空格。

strings = ['hello', 'world']

print strings

>>>['hello', 'world']

print str(strings).replace(" ", "")

>>>['hello','world']

2

看一下sys.stdout。它是一个文件对象,包装标准输出。像每个文件一样,它有一个write方法,接受字符串,并将其直接放入STDOUT中。它也不会自己更改或添加任何字符,所以当您需要完全控制输出时,它非常方便。

>>> import sys
>>> for n in range(8):
...     sys.stdout.write(str(n))
01234567>>> 

请注意两件事:

  • 您需要向函数传递字符串。
  • 打印后不会换行。

另外,知道您使用的结构很方便:

for i in range (0,len(list)):
   print list[i],

等价于(实际上更高效):

for i in list:
    print i,

1
您可以使用以下代码片段进行Python3编程:

```

print(*list(range(1, n + 1)), sep='')
  • * 将删除像 [{}] 这样的初始和结束字符。
  • sep = '' 将删除项目之间的空格。

1
在Python3中执行以下操作对我起作用了。
print(*list,sep='')

0
使用列表推导式。
num= int(raw_input(""))
mod=int(0)
list =[]
while num> 0:
    mod=num%7
    num=num/7
    list.append(mod)
list.reverse()
print ''.join([str(list[i]) for i in range (0,len(list))])

嗨,谢谢,它很好用,但我很新,不明白.join的工作原理,你能给我一个简单的解释吗? - maria alejandra escalante

0
print() 函数有一个参数可以指定结尾字符,默认为 '\n'。将结尾字符指定为 '' 并使用循环打印将实现你所需的效果:
n_list = [1,2,3,4,5]
for i in n_list:
    print(i, end='')

-2
s = "jay"
list = [ i for i in s ]

如果你打印list,你会得到:

['j','a','y']

new_s = "".join(list)

如果你打印 new_s

"jay"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接