8

I tried doing:

str = ""
"".join(map(str, items))

but it says str object is not callable. Is this doable using a single line?

Joan Venge
  • 315,713
  • 212
  • 479
  • 689

4 Answers4

11

Use string join() method.

List:

>>> l = ["a", "b", "c"]
>>> " ".join(l)
'a b c'
>>> 

Tuple:

>>> t = ("a", "b", "c")
>>> " ".join(t)
'a b c'
>>> 

Non-string objects:

>>> l = [1,2,3]
>>> " ".join([str(i) for i in l])
'1 2 3'
>>> " ".join(map(str, l))
'1 2 3'
>>> 
Vivek Sable
  • 9,938
  • 3
  • 40
  • 56
3

The problem is map need function as first argument.

Your code

str = ""
"".join(map(str, items))

Make str function as str variable which has empty string.

Use other variable name.

Ashwini Chaudhary
  • 244,495
  • 58
  • 464
  • 504
Nilesh
  • 20,521
  • 16
  • 92
  • 148
3

Your map() call isn't working because you overwrote the internal str() function. If you hadn't done that, this works:

In [25]: items = ["foo", "bar", "baz", "quux", "stuff"]

In [26]: "".join(map(str, items))
Out[26]: 'foobarbazquuxstuff'

Or, you could simply do:

In [27]: "".join(items)
Out[27]: 'foobarbazquuxstuff'

assuming items contains strings. If it contains ints, floats, etc., you'll need map().

MattDMo
  • 100,794
  • 21
  • 241
  • 231
1

Try:

>>> items=[1, 'a', 2.3, (1, 2)]
>>> ' '.join(str(i) for i in items)
'1 a 2.3 (1, 2)'
John1024
  • 109,961
  • 14
  • 137
  • 171