Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Printing lists in python without spaces

I am doing a program that changes a number in base 10 to base 7, so i did this :

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],

But if the number is 210 it prints 4 2 0 how do i get rid of the spaces

like image 699
maria alejandra escalante Avatar asked Nov 27 '14 15:11

maria alejandra escalante


4 Answers

You can use join with list comprehension:

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

Also, don't use list as a variable name since it is a built-in function.

like image 92
fredtantini Avatar answered Oct 09 '22 05:10

fredtantini


In python 3 you can do like this :

print(*range(1,int(input())+1), sep='')

Your output will be like this if input = 4 :

1234

like image 23
Vikas Periyadath Avatar answered Oct 09 '22 05:10

Vikas Periyadath


Convert the list to a string, and replace the white spaces.

strings = ['hello', 'world']

print strings

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

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

>>>['hello','world']
like image 3
bracoo Avatar answered Oct 09 '22 04:10

bracoo


Take a look at sys.stdout. It's a file object, wrapping standard output. As every file it has write method, which takes string, and puts it directly to STDOUT. It also doesn't alter nor add any characters on it's own, so it's handy when you need to fully control your output.

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

Note two things

  • you have to pass string to the function.
  • you don't get newline after printing.

Also, it's handy to know that the construct you used:

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

is equivalent to (frankly a bit more efficient):

for i in list:
    print i,
like image 2
Wikiii122 Avatar answered Oct 09 '22 04:10

Wikiii122