@jtahstu 2018-04-14T16:25:45.000000Z 字数 1726 阅读 1179

# Python Cookbook - 1.1. Unpacking a Sequence into Separate Variables

python

# 1 Data Structures and Algorithms

Python provides a variety of useful built-in data structures, such as lists, sets, and dictionaries.For the most part, the use of these structures is straightforward. However,common questions concerning searching, sorting, ordering, and filtering often arise.Thus, the goal of this chapter is to discuss common data structures and algorithms involving data. In addition, treatment is given to the various data structures contained in the collections module.

## 1.1. Unpacking a Sequence into Separate Variables

### Problem

You have an N-element tuple or sequence that you would like to unpack into a collection of N variables.

### Solution

Any sequence (or iterable) can be unpacked into variables using a simple assignment operation. The only requirement is that the number of variables and structure match the sequence.

For example:

>>> p = (4, 5)>>> x, y = p>>> x4>>> y5>>>>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]>>> name, shares, price, date = data>>> name1'ACME'>>> date(2012, 12, 21)>>> name, shares, price, (year, mon, day) = data>>> name'ACME'>>> year2012>>> mon12>>> day21>>>

If there is a mismatch in the number of elements, you’ll get an error. For example:

>>> p = (4, 5)>>> x, y, z = pTraceback (most recent call last):File "<stdin>", line 1, in <module>ValueError: need more than 2 values to unpack>>>

### Discussion

Unpacking actually works with any object that happens to be iterable, not just tuples or
lists. This includes strings, files, iterators, and generators.

For example:

>>> s = 'Hello'>>> a, b, c, d, e = s>>> a'H'>>> b'e'>>> e'o'>>>

When unpacking, you may sometimes want to discard certain values. Python has no special syntax for this, but you can often just pick a throwaway variable name for it. For

example:

>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]>>> _, shares, price, _ = data>>> shares50>>> price91.1>>>

However, make sure that the variable name you pick isn’t being used for something else