Skip to content Skip to sidebar Skip to footer

Return Variable Outputs In Python Function?

I have a function that returns a list. When I know the number of elements in the list I can do something like: x,y,z=foo() however, the number of elements in the list can vary. I

Solution 1:

There is no philosophical objection to your syntax, in fact, it's supported in Python 3.1:

>>>a, *b = range(10)>>>a
0
>>>b
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>># Or even more flexibly:>>>a, *b, c = range(10)>>>a
0
>>>b
[1, 2, 3, 4, 5, 6, 7, 8]
>>>c
9
>>>

Solution 2:

A slightly generalized approach:

>>>defunpack(seq, count):...return seq[:count] + [seq[count:]]>>>a, b = unpack([1, 2, 3], 1)>>>a
1
>>>b
[2, 3]
>>>a, b = unpack([1, 2], 1)>>>a
1
>>>b
[2]
>>>a, b = unpack([1], 1)>>>a
1
>>>b
[]
>>>a, b = unpack([], 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
>>>a, b, c, d = unpack(range(10), 3)>>>a
0
>>>b
1
>>>c
2
>>>d
[3, 4, 5, 6, 7, 8, 9]

Solution 3:

Like this

results = foo()
x= results[0]
y= results[1:]

Or change your function to return a two-tuple

deffoo():
    ....
    return someList[0], someList[1:]

Solution 4:

What you need to do is to return a list

e.g. return [ ... ]

You then receive the list and find its length e.g. abc=f(.....)

len(abc) would give you the number of elements in the list

for iiabc in abc: would allow you to access each of the elements

Post a Comment for "Return Variable Outputs In Python Function?"