Getting only element from a single-element list in Python?

When a Python list is known to always contain a single item, is there a way to access it other than:


You may ask, 'Why would you want to?'. Curiosity alone. There seems to be an alternative way to do everything in Python.


  • Raises exception if not exactly one item:

    Sequence unpacking:

    singleitem, = mylist
    # Identical in behavior (byte code produced is the same),
    # but arguably more readable since a lone trailing comma could be missed:
    [singleitem] = mylist

    Rampant insanity, unpack the input to the identity lambda function:

    # The only even semi-reasonable way to retrieve a single item and raise an exception on
    # failure for too many, not just too few, elements as an expression, rather than a
    # statement, without resorting to defining/importing functions elsewhere to do the work
    singleitem = (lambda x: x)(*mylist)

    All others silently ignore spec violation, producing first or last item:

    Explicit use of iterator protocol:

    singleitem = next(iter(mylist))

    Destructive pop:

    singleitem = mylist.pop()

    Negative index:

    singleitem = mylist[-1]

    Set via single iteration for (because the loop variable remains available with its last value when a loop terminates):

    for singleitem in mylist: break

    There are many others (combining or varying bits of the above, or otherwise relying on implicit iteration), but you get the idea.