8

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

Vishnu Upadhyay
  • 5,043
  • 1
  • 13
  • 24
  • possible duplicate of [How to convert list to string](http://stackoverflow.com/questions/5618878/how-to-convert-list-to-string) – fredtantini Nov 27 '14 at 15:38

9 Answers9

14

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.

fredtantini
  • 15,966
  • 8
  • 49
  • 55
  • Hi thanks it worked fine but im new and i dont undestand how .join works can you give me a simple explanayion – maria alejandra escalante Nov 27 '14 at 19:20
  • 2
    @mariaalejandraescalante , it takes string as delimiter and concatenates elements in list with each other with delimiter between them. So this ```','.join(['a', 'b', 'c'])``` will give ```'a,b,c'``` – pavel_form Nov 28 '14 at 15:34
8

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

Vikas Periyadath
  • 3,088
  • 1
  • 21
  • 33
4

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

strings = ['hello', 'world']

print strings

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

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

>>>['hello','world']
bracoo
  • 151
  • 2
2

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,
Wikiii122
  • 486
  • 3
  • 10
1

Doing the following worked for me in Python3

print(*list,sep='')
1

You can use below code snippet for python3

print(*list(range(1, n + 1)), sep='')
  • * will remove initial and end character like [{}]
  • sep = '' will remove the spaces between item.
Werner Hertzog
  • 2,002
  • 3
  • 24
  • 36
0

Use list_comprehension.

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))])
Avinash Raj
  • 172,303
  • 28
  • 230
  • 274
0

The print() function has an argument to specify the end character which by default is '\n'. Specifying the end character as '' and printing using a loop will do what you are looking for:

n_list = [1,2,3,4,5]
for i in n_list:
    print(i, end='')
Binny
  • 263
  • 1
  • 3
  • 7
-2
s = "jay"
list = [ i for i in s ]

It you print list you will get:

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

new_s = "".join(list)

If you print new_s:

"jay"

Djib2011
  • 6,874
  • 5
  • 36
  • 41
Jay Soni
  • 1
  • 2