Unpacking a Sequence into Separate Variables Using Python

We all know pretty much that Python provides a variety of well-known built-in data structures, including lists, sets, and so on. Unpacking a sequence into separate variables is a simple task if you use Python for it as well.

Suppose we have a tuple or a sequence of N elements like below:

<span>mySequence</span> <span>=</span> <span>[</span> <span>'</span><span>FBA</span><span>'</span><span>,</span> <span>20</span><span>,</span> <span>3000.30</span><span>,</span> <span>(</span><span>18</span><span>,</span> <span>12</span><span>,</span> <span>2000</span><span>)</span> <span>]</span>
<span>mySequence</span> <span>=</span> <span>[</span> <span>'</span><span>FBA</span><span>'</span><span>,</span> <span>20</span><span>,</span> <span>3000.30</span><span>,</span> <span>(</span><span>18</span><span>,</span> <span>12</span><span>,</span> <span>2000</span><span>)</span> <span>]</span>
mySequence = [ 'FBA', 20, 3000.30, (18, 12, 2000) ]

Enter fullscreen mode Exit fullscreen mode

I want to unpack all of the sequential data into different variables, but I want to do that using a simple assignment operation. I can do that using a simple assignment operation in Python. Let me show you how.

<span>a</span><span>,</span> <span>b</span><span>,</span> <span>c</span><span>,</span> <span>d</span> <span>=</span> <span>mySequence</span>
<span>a</span><span>,</span> <span>b</span><span>,</span> <span>c</span><span>,</span> <span>d</span> <span>=</span> <span>mySequence</span>
a, b, c, d = mySequence

Enter fullscreen mode Exit fullscreen mode

Now, all the sequential data have been assigned to my newly provided variables successfully. Let’s check that out.

<span>print</span><span>(</span><span>a</span><span>)</span>
<span>print</span><span>(</span><span>b</span><span>)</span>
<span>print</span><span>(</span><span>c</span><span>)</span>
<span>print</span><span>(</span><span>d</span><span>)</span>
<span>print</span><span>(</span><span>a</span><span>)</span>
<span>print</span><span>(</span><span>b</span><span>)</span>
<span>print</span><span>(</span><span>c</span><span>)</span>
<span>print</span><span>(</span><span>d</span><span>)</span>
print(a) print(b) print(c) print(d)

Enter fullscreen mode Exit fullscreen mode

The full code would be like this:

<span>mySequence</span> <span>=</span> <span>[</span> <span>'</span><span>FBA</span><span>'</span><span>,</span> <span>20</span><span>,</span> <span>3000.30</span><span>,</span> <span>(</span><span>18</span><span>,</span> <span>12</span><span>,</span> <span>2000</span><span>)</span> <span>]</span>
<span>a</span><span>,</span> <span>b</span><span>,</span> <span>c</span><span>,</span> <span>d</span> <span>=</span> <span>mySequence</span>
<span>print</span><span>(</span><span>a</span><span>)</span>
<span>print</span><span>(</span><span>b</span><span>)</span>
<span>print</span><span>(</span><span>c</span><span>)</span>
<span>print</span><span>(</span><span>d</span><span>)</span>
<span>mySequence</span> <span>=</span> <span>[</span> <span>'</span><span>FBA</span><span>'</span><span>,</span> <span>20</span><span>,</span> <span>3000.30</span><span>,</span> <span>(</span><span>18</span><span>,</span> <span>12</span><span>,</span> <span>2000</span><span>)</span> <span>]</span>
<span>a</span><span>,</span> <span>b</span><span>,</span> <span>c</span><span>,</span> <span>d</span> <span>=</span> <span>mySequence</span>
<span>print</span><span>(</span><span>a</span><span>)</span>
<span>print</span><span>(</span><span>b</span><span>)</span>
<span>print</span><span>(</span><span>c</span><span>)</span>
<span>print</span><span>(</span><span>d</span><span>)</span>
mySequence = [ 'FBA', 20, 3000.30, (18, 12, 2000) ] a, b, c, d = mySequence print(a) print(b) print(c) print(d)

Enter fullscreen mode Exit fullscreen mode

The output would be:

FBA
20
3000.3
(18, 12, 2000)
FBA
20
3000.3
(18, 12, 2000)
FBA 20 3000.3 (18, 12, 2000)

Enter fullscreen mode Exit fullscreen mode

We can provide meaningful variable names for our needs as well. You can check the following code also.

<span>mySequence</span> <span>=</span> <span>[</span> <span>'</span><span>FBA</span><span>'</span><span>,</span> <span>20</span><span>,</span> <span>3000.30</span><span>,</span> <span>(</span><span>18</span><span>,</span> <span>12</span><span>,</span> <span>2000</span><span>)</span> <span>]</span>
<span>name</span><span>,</span> <span>age</span><span>,</span> <span>salary</span><span>,</span> <span>dateOfBirth</span> <span>=</span> <span>mySequence</span>
<span>print</span><span>(</span><span>name</span><span>)</span>
<span>print</span><span>(</span><span>age</span><span>)</span>
<span>print</span><span>(</span><span>salary</span><span>)</span>
<span>print</span><span>(</span><span>dateOfBirth</span><span>)</span>
<span>mySequence</span> <span>=</span> <span>[</span> <span>'</span><span>FBA</span><span>'</span><span>,</span> <span>20</span><span>,</span> <span>3000.30</span><span>,</span> <span>(</span><span>18</span><span>,</span> <span>12</span><span>,</span> <span>2000</span><span>)</span> <span>]</span>
<span>name</span><span>,</span> <span>age</span><span>,</span> <span>salary</span><span>,</span> <span>dateOfBirth</span> <span>=</span> <span>mySequence</span>
<span>print</span><span>(</span><span>name</span><span>)</span>
<span>print</span><span>(</span><span>age</span><span>)</span>
<span>print</span><span>(</span><span>salary</span><span>)</span>
<span>print</span><span>(</span><span>dateOfBirth</span><span>)</span>
mySequence = [ 'FBA', 20, 3000.30, (18, 12, 2000) ] name, age, salary, dateOfBirth = mySequence print(name) print(age) print(salary) print(dateOfBirth)

Enter fullscreen mode Exit fullscreen mode

The output is given below:

FBA
20
3000.3
(18, 12, 2000)
FBA
20
3000.3
(18, 12, 2000)
FBA 20 3000.3 (18, 12, 2000)

Enter fullscreen mode Exit fullscreen mode

We can get the day, month, and year from the dateOfBirth variable as well by unpacking the variable.

<span>mySequence</span> <span>=</span> <span>[</span> <span>'</span><span>FBA</span><span>'</span><span>,</span> <span>20</span><span>,</span> <span>3000.30</span><span>,</span> <span>(</span><span>18</span><span>,</span> <span>12</span><span>,</span> <span>2000</span><span>)</span> <span>]</span>
<span>name</span><span>,</span> <span>age</span><span>,</span> <span>salary</span><span>,</span> <span>(</span><span>day</span><span>,</span> <span>month</span><span>,</span> <span>year</span><span>)</span> <span>=</span> <span>mySequence</span>
<span>print</span><span>(</span><span>name</span><span>)</span>
<span>print</span><span>(</span><span>age</span><span>)</span>
<span>print</span><span>(</span><span>salary</span><span>)</span>
<span>print</span><span>(</span><span>day</span><span>)</span>
<span>print</span><span>(</span><span>month</span><span>)</span>
<span>print</span><span>(</span><span>year</span><span>)</span>
<span>mySequence</span> <span>=</span> <span>[</span> <span>'</span><span>FBA</span><span>'</span><span>,</span> <span>20</span><span>,</span> <span>3000.30</span><span>,</span> <span>(</span><span>18</span><span>,</span> <span>12</span><span>,</span> <span>2000</span><span>)</span> <span>]</span>
<span>name</span><span>,</span> <span>age</span><span>,</span> <span>salary</span><span>,</span> <span>(</span><span>day</span><span>,</span> <span>month</span><span>,</span> <span>year</span><span>)</span> <span>=</span> <span>mySequence</span>
<span>print</span><span>(</span><span>name</span><span>)</span>
<span>print</span><span>(</span><span>age</span><span>)</span>
<span>print</span><span>(</span><span>salary</span><span>)</span>
<span>print</span><span>(</span><span>day</span><span>)</span>
<span>print</span><span>(</span><span>month</span><span>)</span>
<span>print</span><span>(</span><span>year</span><span>)</span>
mySequence = [ 'FBA', 20, 3000.30, (18, 12, 2000) ] name, age, salary, (day, month, year) = mySequence print(name) print(age) print(salary) print(day) print(month) print(year)

Enter fullscreen mode Exit fullscreen mode

The output is given below.

FBA
20
3000.3
18
12
2000
FBA
20
3000.3
18
12
2000
FBA 20 3000.3 18 12 2000

Enter fullscreen mode Exit fullscreen mode

This unpacking technique will work with any object that is iterable, not just simply lists or tuples. You can use this in strings, iterators, generators, and files as well.

<span>myString</span> <span>=</span> <span>'</span><span>United</span><span>'</span>
<span>p</span><span>,</span> <span>q</span><span>,</span> <span>r</span><span>,</span> <span>s</span><span>,</span> <span>t</span><span>,</span> <span>u</span> <span>=</span> <span>myString</span>
<span>print</span><span>(</span><span>r</span><span>)</span>
<span>#Output: i </span>
<span>myString</span> <span>=</span> <span>'</span><span>United</span><span>'</span>
<span>p</span><span>,</span> <span>q</span><span>,</span> <span>r</span><span>,</span> <span>s</span><span>,</span> <span>t</span><span>,</span> <span>u</span> <span>=</span> <span>myString</span>
<span>print</span><span>(</span><span>r</span><span>)</span>

<span>#Output: i </span>
myString = 'United' p, q, r, s, t, u = myString print(r) #Output: i

Enter fullscreen mode Exit fullscreen mode

Keep in mind that if there happens any mismatch in the number of elements, then we will get an error. An example would be as follows.

<span>x</span> <span>=</span> <span>(</span><span>1</span><span>,</span> <span>2</span><span>,</span> <span>3</span><span>)</span>
<span>p</span><span>,</span> <span>q</span> <span>=</span> <span>x</span>
<span>x</span> <span>=</span> <span>(</span><span>1</span><span>,</span> <span>2</span><span>,</span> <span>3</span><span>)</span>
<span>p</span><span>,</span> <span>q</span> <span>=</span> <span>x</span>
x = (1, 2, 3) p, q = x

Enter fullscreen mode Exit fullscreen mode

As there are three numbers in the sequence, but we wanted to assign them to two variables instead of three variables, we will receive an error as follows.

Traceback (most recent call last):
File "/home/fba/Desktop/Practice/1.py", line 2, in <module>
p, q = x
ValueError: too many values to unpack (expected 2)
Traceback (most recent call last):
  File "/home/fba/Desktop/Practice/1.py", line 2, in <module>
    p, q = x
ValueError: too many values to unpack (expected 2)
Traceback (most recent call last): File "/home/fba/Desktop/Practice/1.py", line 2, in <module> p, q = x ValueError: too many values to unpack (expected 2)

Enter fullscreen mode Exit fullscreen mode

During this unpacking, we might want to discard certain values. Sadly, python does not have any special syntax for this. We can just pick a throwaway variable name for that. An example would be as follows.

<span>myString</span> <span>=</span> <span>[</span><span>'</span><span>FBA</span><span>'</span> <span>,</span> <span>'</span><span>IJK</span><span>'</span> <span>,</span> <span>90</span><span>,</span> <span>11</span><span>]</span>
<span>_</span><span>,</span> <span>a</span><span>,</span> <span>b</span><span>,</span> <span>_</span> <span>=</span> <span>myString</span>
<span>myString</span> <span>=</span> <span>[</span><span>'</span><span>FBA</span><span>'</span> <span>,</span> <span>'</span><span>IJK</span><span>'</span> <span>,</span> <span>90</span><span>,</span> <span>11</span><span>]</span>
<span>_</span><span>,</span> <span>a</span><span>,</span> <span>b</span><span>,</span> <span>_</span> <span>=</span> <span>myString</span>
myString = ['FBA' , 'IJK' , 90, 11] _, a, b, _ = myString

Enter fullscreen mode Exit fullscreen mode

Here, we are using _ variable as a throwaway variable. Remember, if you use the same throwable variable more than one time, then if you want to print that throwable variable later, you will get the latest value you have assigned to the variable earlier in the output. Like, in the code given above, we have used _ variable both for the data FBA and the data 11. If you want to print the value of _ variable, then we will get 11 as the output as the latest value we have assigned to the _ variable was 11.

<span>myString</span> <span>=</span> <span>[</span><span>'</span><span>FBA</span><span>'</span> <span>,</span> <span>'</span><span>IJK</span><span>'</span> <span>,</span> <span>90</span><span>,</span> <span>11</span><span>]</span>
<span>_</span><span>,</span> <span>a</span><span>,</span> <span>b</span><span>,</span> <span>_</span> <span>=</span> <span>myString</span>
<span>print</span><span>(</span><span>_</span><span>)</span>
<span>myString</span> <span>=</span> <span>[</span><span>'</span><span>FBA</span><span>'</span> <span>,</span> <span>'</span><span>IJK</span><span>'</span> <span>,</span> <span>90</span><span>,</span> <span>11</span><span>]</span>
<span>_</span><span>,</span> <span>a</span><span>,</span> <span>b</span><span>,</span> <span>_</span> <span>=</span> <span>myString</span>
<span>print</span><span>(</span><span>_</span><span>)</span>
myString = ['FBA' , 'IJK' , 90, 11] _, a, b, _ = myString print(_)

Enter fullscreen mode Exit fullscreen mode

The output is as follows.

11
11
11

Enter fullscreen mode Exit fullscreen mode

Thanks for reading this entire article. If you want, you may follow me on Twitter, LinkedIn, GitHub. Here is my website as well. Have a great day!

原文链接:Unpacking a Sequence into Separate Variables Using Python

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
Smash the waves would rather get in the way of the reef hill, also not willing to take a step back.
海浪宁可在挡路的礁山上撞得粉碎,也不肯后退一步
评论 抢沙发

请登录后发表评论

    暂无评论内容