6

Right now I am having a list

>>> deints
[10, 10, 10, 50]

I want to print it as 10.10.10.50. I made it as

Method 1

>>> print(str(deints[0])+'.'+str(deints[1])+'.'+str(deints[2])+'.'+str(deints[3]))
10.10.10.50

Are there any other ways we can acheivie this ?

Thank you

Raja G
  • 5,973
  • 14
  • 49
  • 82

6 Answers6

10

You can do it with:

print('.'.join(str(x) for x in deints))
Keiwan
  • 8,031
  • 5
  • 36
  • 49
  • Thank you. Even though it is for python 2 I understood what I need to add to make it run in python 3 – Raja G May 22 '16 at 17:42
5

This is very simple. Take a look at str.join

print '.'.join([str(a) for a in deints])

Citation from the docs:

str.join(iterable)

Return a string which is the concatenation of the strings in the iterable iterable. The separator between elements is the string providing this method.

Community
  • 1
  • 1
ForceBru
  • 43,482
  • 10
  • 63
  • 98
5

You can use the join method on strings and have to convert the data in the list to strings first.

>>> '.'.join(map(str, deints))
'10.10.10.50'

join takes the string as a delimiter and concatenates the content of the list with this delimiter between each element.

Matthias
  • 12,873
  • 6
  • 42
  • 48
  • I'm not the down voter, but the problem here is that you need to `'.'.join` – ForceBru May 22 '16 at 17:34
  • Ah, right. But the abstraction should have been possible. It's funny, [first time I answered this kind of question](http://stackoverflow.com/questions/12053236/python-equivalent-for-phps-implode/12053276#12053276) I got positive reputation ... – Matthias May 22 '16 at 17:35
  • I need an integer not again in string. I have found what I need. Thank you – Raja G May 22 '16 at 17:44
  • @Raja: The list is unaltered. `map` applies the call to `str` to the list and gives back the changed result (an _iterable_ with strings) which is then used by `join`. – Matthias May 22 '16 at 17:46
2

Obviously str.join() is the shortest way

'.'.join(map(str, deints))

or if you dislike map() use a list comprehension

'.'.join([str(x) for x in deints])

you could also do it manually, using * to convert the deints list into a series of function arguments

'{}.{}.{}.{}'.format(*deints)

or use functools.reduce and a lambda function

reduce(lambda y, z: '{}.{}'.format(y, z), x)

All return

'10.10.10.50'
C14L
  • 12,153
  • 4
  • 39
  • 52
1

Just a non-join solution.

>>> print(*deints, sep='.')
10.10.10.50
Stefan Pochmann
  • 27,593
  • 8
  • 44
  • 107
0

Convert them into strings, then join them. Try using:

".".join([str(x) for x in x])
armatita
  • 12,825
  • 8
  • 48
  • 49