Posts: 6
Threads: 6
Joined: Jul 2017
my question here
I want to create long_string by concatenating the items in the list previously created
and also I have to make sure to put a space betweeen the names in the list. I have written the following code. But it's giving me the following error. I dont know why.
Error:
File "<ipython-input-44-fee3cf9fac7b>", line 7
print ''.join(str(n)+s for (n,s) in zip(list1, list2))
^
SyntaxError: invalid syntax
list1 = [1,2,3,4,5]
list2 = ["one", "two", "three", "four", "five"]
print (''.join([str(a) +" "+ b for a,b in zip(list1,list2)])) Error:
File "<ipython-input-44-fee3cf9fac7b>", line 7
print ''.join(str(n)+s for (n,s) in zip(list1, list2))
^
SyntaxError: invalid syntax
Posts: 4,220
Threads: 97
Joined: Sep 2016
Works for me, although I would join on a space or other non-empty string.
From the error you've posted, I would expect the problem is actually on the line before, maybe a missing comma or quote.
Posts: 12,024
Threads: 484
Joined: Sep 2016
you might want to add a newline:
print (''.join([str(a) +" "+ b + '\n' for a,b in zip(list1,list2)]))
Posts: 2,953
Threads: 48
Joined: Sep 2016
" ".join(list1.extend(list2))
Posts: 4,220
Threads: 97
Joined: Sep 2016
Jul-10-2017, 08:26 PM
(This post was last modified: Jul-10-2017, 08:26 PM by ichabod801.)
@wavic: I think they want to interleave them, not one then the other. And that doesn't work anyway.
Posts: 2,342
Threads: 62
Joined: Sep 2016
(Jul-10-2017, 08:21 PM)wavic Wrote: " ".join(list1.extend(list2))
Output: >>> " ".join([].extend([]))
Traceback (most recent call last):
 File "<pyshell#1>", line 1, in <module>
  " ".join([].extend([]))
TypeError: can only join an iterable
>>> print([].extend([]))
None
Posts: 2,953
Threads: 48
Joined: Sep 2016
An empty list is None, yes.
Anyway, it works for me. I've just tried it
l1 = list(range(10))
l2 = list(range(11, 20))
print(' '.join([str(i) for i in l1.extend(l2)]))
Posts: 2,342
Threads: 62
Joined: Sep 2016
(Jul-10-2017, 08:47 PM)wavic Wrote: An empty list is None, yes. I don't understand what you mean by this.
(Jul-10-2017, 08:47 PM)wavic Wrote: it works for me. I've just tried it What output are you getting?
Output: $ python
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 26 2016, 12:10:39)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> l1 = list(range(10))
>>> l2 = list(range(11, 20))
>>> print(' '.join([str(i) for i in l1.extend(l2)]))
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable
>>> ^D
$ python3
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> l1 = list(range(10))
>>> l2 = list(range(11, 20))
>>> print(' '.join([str(i) for i in l1.extend(l2)]))
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable
>>>
Posts: 4,220
Threads: 97
Joined: Sep 2016
(Jul-10-2017, 08:47 PM)wavic Wrote: An empty list is None, yes.
Output: >>> [] is None
False
???
Posts: 2,953
Threads: 48
Joined: Sep 2016
I was meaning it's equivalent when you get None
In [1]: l = []
In [2]: bool(l)
Out[2]: False
In [3]: bool(None)
Out[3]: False
|