Reputation: 711
I'm learning python from Google code class. I'm trying out the exercises.
def front_x(words):
x_list, ord_list = []
for word in words:
if word[0] == 'x':
x_list.append(word)
else:
ord_list.append(word)
return sorted(x_list) + sorted(ord_list)
I believe the error is thrown because of initializing two empty lists on a single line. If if initialize them on separate lines, no more errors occur. Is this the reason?
Upvotes: 22
Views: 64496
Reputation: 163
return type of function does not match with values expected in function...
check the number of variables returned from function and variables you are expecting
Upvotes: 0
Reputation: 1121924
You are trying to use tuple assignment:
x_list, ord_list = []
you probably meant to use multiple assignment:
x_list = ord_list = []
which will not do what you expect it to; use the following instead:
x_list, ord_list = [], []
or, best still:
x_list = []
ord_list = []
When using a comma-separated list of variable names, Python expects there to be a sequence of expressions on the right-hand side that matches the number variables; the following would be legal too:
two_lists = ([], [])
x_list, ord_list = two_lists
This is called tuple unpacking. If, on the other hand, you tried to use multiple assignment with one empty list literal (x_list = ord_list = []
) then both x_list
and ord_list
would be pointing to the same list and any changes made through one variable will be visible on the other variable:
>>> x_list = ord_list = []
>>> x_list.append(1)
>>> x_list
[1]
>>> ord_list
[1]
Better keep things crystal clear and use two separate assignments, giving each variable their own empty list.
Upvotes: 38
Reputation: 63737
Change the line
x_list, ord_list = []
to
x_list, ord_list = [], []
Upvotes: 5