WEBVTT 1 00:00:01.170 --> 00:00:06.120 So continuing on with our discussion about tuples in Python, so we just talked about 2 00:00:06.120 --> 00:00:10.105 this line here in line 15 and how that concept is called unpacking the tuple. 3 00:00:10.105 --> 00:00:13.890 It actually mentioned I'm gonna leave the list item here on line 12, 4 00:00:13.890 --> 00:00:17.450 just to show you how a tuple can be much better than listing situation. 5 00:00:17.450 --> 00:00:20.340 So again if we run the program, making sure we've selected tuples or 6 00:00:20.340 --> 00:00:22.970 whatever name you've called your path and fall. 7 00:00:22.970 --> 00:00:25.490 Click on run. You can actually see how it's unpacked 8 00:00:25.490 --> 00:00:29.030 the top, so in other words with that one line of code on line 15 you've 9 00:00:29.030 --> 00:00:33.440 extracted the contents out of the tuple into three individual variables, title, 10 00:00:33.440 --> 00:00:34.390 artist and year. 11 00:00:34.390 --> 00:00:36.980 So you can see that that makes it very convenient when dealing with 12 00:00:36.980 --> 00:00:41.510 the individual items of tuple by signing them to meaningful named variables. 13 00:00:41.510 --> 00:00:43.530 I'm just cleaning up this a little bit so I'm going to delete that. 14 00:00:44.770 --> 00:00:48.430 So we can actually do something similar or actually the same with the list. 15 00:00:48.430 --> 00:00:49.500 So you can change this. 16 00:00:49.500 --> 00:00:53.000 So we could come along here and we could change this code on line ten and 17 00:00:53.000 --> 00:00:58.689 we could do something like teleca two dot pinned rock. 18 00:00:59.710 --> 00:01:04.610 Like so. I'm going to give it title, artist, 19 00:01:04.610 --> 00:01:07.170 year, equals Metallica 2. 20 00:01:07.170 --> 00:01:11.240 And if we actually run that, we actually get an error. 21 00:01:11.240 --> 00:01:16.510 And this is an example of why you wouldn't want to use a list in this situation where 22 00:01:16.510 --> 00:01:20.200 the code you're working on, or the data you're working on, isn't to be changed. 23 00:01:20.200 --> 00:01:21.330 So it's not immutable. 24 00:01:21.330 --> 00:01:23.400 So a list, you can see, isn't immutable. 25 00:01:23.400 --> 00:01:26.030 We're able to actually append an item to that. 26 00:01:26.030 --> 00:01:29.380 And, of course, when we went to run the code on line 12, we actually failed 27 00:01:29.380 --> 00:01:34.950 because it was too many values to unpack, because we didn't assign enough variables. 28 00:01:34.950 --> 00:01:37.050 To unpack the data out of the list. 29 00:01:37.050 --> 00:01:40.120 So remember that you might be creating code modules. 30 00:01:40.120 --> 00:01:42.214 That will be used in different parts of a program. 31 00:01:42.214 --> 00:01:45.693 And possibly and even probably if you start working professionally. 32 00:01:45.693 --> 00:01:48.068 As a path-end developer by other programmers. 33 00:01:48.068 --> 00:01:50.840 And if you allow such things to be done then frankly. 34 00:01:50.840 --> 00:01:53.170 It's only a matter of time before they will be done. 35 00:01:53.170 --> 00:01:54.870 That's just the nature of programming. 36 00:01:54.870 --> 00:01:58.360 Now because a tuple is immutable in other words it can't be changed 37 00:01:58.360 --> 00:02:03.290 In this case line ten couldn't be executed cuz a tuple doesn't have an append method. 38 00:02:03.290 --> 00:02:07.070 So, this makes your code much more robust to make it a tuple in this scenario and 39 00:02:07.070 --> 00:02:09.900 prevents errors that would actually not appear until someone else was 40 00:02:09.900 --> 00:02:10.880 using the program. 41 00:02:10.880 --> 00:02:16.040 So for example if we try and do something like imelda.append 42 00:02:16.040 --> 00:02:19.950 note that there's no intelligent, IntelliSense, nothing happened. 43 00:02:19.950 --> 00:02:22.410 Try and do that and run it. 44 00:02:22.410 --> 00:02:26.940 I think if I just comment out that line for now. 45 00:02:26.940 --> 00:02:31.665 The point is if we actually run this now, we actually get an error, tuple object has 46 00:02:31.665 --> 00:02:36.315 no attribute append, because of course we can only use the .append with a list item. 47 00:02:36.315 --> 00:02:39.085 Now the other thing to note is that tuple can contain elements that 48 00:02:39.085 --> 00:02:40.835 are themselves tuples. 49 00:02:40.835 --> 00:02:41.825 So let's actually go ahead and 50 00:02:41.825 --> 00:02:45.415 add a track list to the tuple representing the Albert Moore Mayhem. 51 00:02:45.415 --> 00:02:47.815 We're just gonna use the first four songs to save some typing. 52 00:02:47.815 --> 00:02:50.950 So we're gonna clear out the Metallica code because we don't need that anymore. 53 00:02:50.950 --> 00:02:52.190 I'm just going to get rid of all that right now. 54 00:02:52.190 --> 00:02:54.720 And let's actually change this mail order, and 55 00:02:54.720 --> 00:02:56.980 I'm just going to close the running data. 56 00:02:56.980 --> 00:03:00.300 And after date, the year that the album was released, 57 00:03:00.300 --> 00:03:02.550 then I'm going to put a comma, then put a bracket, and 58 00:03:02.550 --> 00:03:06.360 I'm going to type in another bracket, because I'm creating a tuple. 59 00:03:06.360 --> 00:03:07.993 And we're going to create the individual items. 60 00:03:07.993 --> 00:03:13.393 So it's one, in the tracks, 61 00:03:13.393 --> 00:03:20.524 "Pulling the rug" 2, "Psycho". 62 00:03:20.524 --> 00:03:24.303 3, "Mayhem". 63 00:03:24.303 --> 00:03:29.300 And 4, "Kentish Town Waltz. 64 00:03:32.500 --> 00:03:34.398 I can just do that and get rid of that last bracket there. 65 00:03:34.398 --> 00:03:39.092 So it's another line here, print(imelda). 66 00:03:39.092 --> 00:03:43.964 We're gonna do in this case, we're gonna do title, artist, year, but 67 00:03:43.964 --> 00:03:48.310 also tracks now, the fourth variable, equals imelda. 68 00:03:48.310 --> 00:03:51.620 So we're unpacking the top lagoon. 69 00:03:51.620 --> 00:03:56.619 And of course we're gonna print title, print artist, 70 00:03:56.619 --> 00:04:01.530 print year, print tracks. 71 00:04:01.530 --> 00:04:02.140 So if you run that. 72 00:04:03.270 --> 00:04:06.020 You can see we've correctly now got the information out. 73 00:04:06.020 --> 00:04:09.290 We've got the three fields as before, title, artist and year. 74 00:04:09.290 --> 00:04:11.720 But notice how the fourth entry, tracks, 75 00:04:11.720 --> 00:04:14.490 has been returned as a tuple in its own right. 76 00:04:14.490 --> 00:04:16.760 Now the important thing to note here in this situation, 77 00:04:16.760 --> 00:04:18.520 when adding these extra tuples, 78 00:04:18.520 --> 00:04:22.390 was that it was important to actually enclose the four individual songs. 79 00:04:22.390 --> 00:04:25.200 The track number and the actual song in parentheses. 80 00:04:25.200 --> 00:04:28.240 Otherwise what would happen would be the Python interpreter 81 00:04:28.240 --> 00:04:31.940 would actually evaluate that as a single tuple with eight elements. 82 00:04:31.940 --> 00:04:34.680 In other words, track 1, song 1, track 2, song 2. 83 00:04:34.680 --> 00:04:38.520 So by putting an extra set of parentheses around each, 84 00:04:38.520 --> 00:04:43.050 we're actually making it clear that these are individual tuples in their own right. 85 00:04:43.050 --> 00:04:45.740 So just to show you what I actually mean there I can actually change that. 86 00:04:45.740 --> 00:04:50.810 So I could get rid of these extra brackets, and close this down. 87 00:04:50.810 --> 00:04:52.032 So I get rid of all these brackets. 88 00:04:58.739 --> 00:05:00.740 Just leaving the last bracket in there. 89 00:05:00.740 --> 00:05:01.630 If I actually run that. 90 00:05:01.630 --> 00:05:05.610 You can see, now, we've got single tuple with eight entries. 91 00:05:05.610 --> 00:05:08.540 The four individual track numbers, and the four songs. 92 00:05:08.540 --> 00:05:11.630 And obviously, in that case, we've actually lost a lot of the structure. 93 00:05:11.630 --> 00:05:14.400 Because instead of the tracks obviously having a track number. 94 00:05:14.400 --> 00:05:18.043 With title we've just got eight values, and there's no obvious relationship. 95 00:05:18.043 --> 00:05:20.240 At least not obvious to the computer, anyway. 96 00:05:20.240 --> 00:05:23.950 So we just undo that, and do that again, put the brackets back again. 97 00:05:27.250 --> 00:05:28.970 So we've got individual tuples again. 98 00:05:28.970 --> 00:05:32.570 And it's also possible to extract the individual tracks as well. 99 00:05:32.570 --> 00:05:35.240 So at the moment we got title, artist, year, we've got tracks. 100 00:05:35.240 --> 00:05:42.843 But let's change tracks to track1, track2, track3, and track4. 101 00:05:42.843 --> 00:05:51.097 And now we have to print those out individually, so track1, 2, 3, 4. 102 00:05:51.097 --> 00:05:52.040 So, we can actually run that. 103 00:05:52.040 --> 00:05:56.240 And what I was going to do then, I'll just close that down. 104 00:05:56.240 --> 00:05:59.140 What I was gonna go is get rid of this initial bracket, so 105 00:05:59.140 --> 00:06:02.570 I'm actually just creating four separate tuples effectively here. 106 00:06:02.570 --> 00:06:07.956 If I actually run that, that breaks down each individual track and 107 00:06:07.956 --> 00:06:10.271 title into it's own tuple. 108 00:06:10.271 --> 00:06:11.845 Now that will actually get an error, and 109 00:06:11.845 --> 00:06:14.901 the error that you actually saw on the screen before I changed it, if it hadn't 110 00:06:14.901 --> 00:06:17.756 actually created four separate track variables, as I've done there. 111 00:06:17.756 --> 00:06:22.201 But also if I hadn't actually changed and removed the extra brackets, 112 00:06:22.201 --> 00:06:25.829 you sort of created a tuple within a tuple, so to speak, or 113 00:06:25.829 --> 00:06:28.650 four tuples within that master tuple. 114 00:06:28.650 --> 00:06:31.480 So in this example, though, it's still a good example cuz we've actually 115 00:06:31.480 --> 00:06:33.750 retained the relationship between track number and title. 116 00:06:33.750 --> 00:06:37.350 But the downside with this method here, with track one through four, 117 00:06:37.350 --> 00:06:40.510 cuz we'd actually need to know in advance how many tracks there are. 118 00:06:40.510 --> 00:06:42.830 And obviously we'll need to create a variable for each one. 119 00:06:42.830 --> 00:06:45.660 Cuz obviously if we forgot, and got rid of track4 and 120 00:06:45.660 --> 00:06:49.350 we'll comment this line out and we were to run it, 121 00:06:49.350 --> 00:06:53.330 you actually get an error because there's too many values to unpack. 122 00:06:53.330 --> 00:06:56.290 So we'll need to look at our data now ahead of time. 123 00:06:56.290 --> 00:06:58.640 How many variables to actually have on the assignment line, 124 00:06:58.640 --> 00:07:02.180 and obviously to actually be able to use those on the right line. 125 00:07:02.180 --> 00:07:05.310 Of course, we've now lost the ability to actually 126 00:07:05.310 --> 00:07:07.600 process a single tuple with a for loop. 127 00:07:07.600 --> 00:07:10.360 And we'll do that in a minute, just in case it's not obvious. 128 00:07:10.360 --> 00:07:13.740 So, let's actually look at the final example without any parenthesis. 129 00:07:13.740 --> 00:07:16.120 To create a single tuple containing 11 elements. 130 00:07:16.120 --> 00:07:19.340 So, I'm actually gonna copy and paste some code here just to save a bit of time. 131 00:07:19.340 --> 00:07:20.030 I'm going to copy that. 132 00:07:20.030 --> 00:07:21.640 I'm going to close this window down. 133 00:07:21.640 --> 00:07:25.510 I'm just gonna paste this in to the builder variable definition. 134 00:07:25.510 --> 00:07:29.030 So, you can see in this case now we've literally got a single tuple containing 135 00:07:29.030 --> 00:07:30.200 eleven elements. 136 00:07:30.200 --> 00:07:33.250 So, we've obviously got the three that we had initial title, artist, and year. 137 00:07:33.250 --> 00:07:35.510 And then we've also got each track number. 138 00:07:35.510 --> 00:07:38.120 And also, the actual song title for 139 00:07:38.120 --> 00:07:41.780 the first four songs of the track of the album as well. 140 00:07:41.780 --> 00:07:44.360 I you try to print to run this we'll get an error. 141 00:07:44.360 --> 00:07:46.920 And too many ellies to unpack, expected 7. 142 00:07:46.920 --> 00:07:51.240 And that's because we've actually put them all individually into one master tuple. 143 00:07:51.240 --> 00:07:55.640 And it's now a total of 11 elements, two each for the first four tracks, for 144 00:07:55.640 --> 00:07:57.100 the artist for the album. 145 00:07:57.100 --> 00:08:00.120 And then, of course, it was title, artist as well, and that made up the 11. 146 00:08:00.120 --> 00:08:03.580 So if you're really trying to store an album object, for instance, in Python, 147 00:08:03.580 --> 00:08:05.710 the first structure we did makes more sense and 148 00:08:05.710 --> 00:08:08.390 more accurately reflects the real objects. 149 00:08:08.390 --> 00:08:10.450 Cuz albums can have different numbers of tracks, 150 00:08:10.450 --> 00:08:14.500 you can just iterate over the contained tracks tuple to print them all out. 151 00:08:14.500 --> 00:08:17.260 So as promised, we're going to look at the code to print the tracks 152 00:08:17.260 --> 00:08:19.900 in more mayhem using the original structure. 153 00:08:19.900 --> 00:08:23.500 But I didn't say I wouldn't ask you to have a go first though. 154 00:08:23.500 --> 00:08:26.990 So what I've come up with is a simple challenge and I'm gonna start that now. 155 00:08:26.990 --> 00:08:27.993 So let me talk about the challenge. 156 00:08:27.993 --> 00:08:29.432 So the challenge is going to be, 157 00:08:42.516 --> 00:08:43.880 Okay, so this is a challenge. 158 00:08:43.880 --> 00:08:46.510 So given the tuple that I've got on line seven, below. 159 00:08:46.510 --> 00:08:49.840 And that actually represents the amount Imelda May track called Mayhem. 160 00:08:49.840 --> 00:08:53.030 And that should actually say, Imelda May album. 161 00:08:53.030 --> 00:08:54.580 So, here, I'll start it here. 162 00:08:54.580 --> 00:08:57.810 Given the tuple below that represents the Imelda May album, Mayhem, 163 00:08:57.810 --> 00:08:59.760 or at least the first four songs. 164 00:08:59.760 --> 00:09:02.410 Right code to actually print the album details. 165 00:09:02.410 --> 00:09:04.800 Followed by listing of all the tracks in the album. 166 00:09:04.800 --> 00:09:08.020 Now, you want to indent the tracks by a single tab stop when printing them. 167 00:09:08.020 --> 00:09:11.960 And remember that you can actually pass more than one item to the print function, 168 00:09:11.960 --> 00:09:14.210 separating them with a comma. 169 00:09:14.210 --> 00:09:17.150 So go away and see if you can come up with a solution to that, 170 00:09:17.150 --> 00:09:18.450 printing that out in the right format. 171 00:09:18.450 --> 00:09:21.550 And when you're ready to come back and check your code, restart the video and 172 00:09:21.550 --> 00:09:22.620 I'll show you how to do it. 173 00:09:22.620 --> 00:09:24.723 So pause the video now and see what you can come up with. 174 00:09:27.884 --> 00:09:30.210 Okay, so how did you figure it out? 175 00:09:30.210 --> 00:09:33.260 So let me go through and show you our sample solution. 176 00:09:33.260 --> 00:09:36.710 First I'll start off by just printing the current tuple just so 177 00:09:36.710 --> 00:09:38.220 we can sort of see what it's like. 178 00:09:38.220 --> 00:09:41.170 So the first thing we wanna do is extract the fields. 179 00:09:41.170 --> 00:09:42.730 So we're gonna extract four. 180 00:09:42.730 --> 00:09:49.566 Title Artist, year, tracks = imelda. 181 00:09:49.566 --> 00:09:53.775 And obviously we're using this tuple that has got four tuples within it, and 182 00:09:53.775 --> 00:09:58.175 by doing that, we can actually just use that one assignment to actually get all of 183 00:09:58.175 --> 00:10:00.137 the tuples in that one assignment. 184 00:10:00.137 --> 00:10:05.480 And we can obviously print out the title, print title. 185 00:10:05.480 --> 00:10:09.836 You can print the artist and obviously the year as well but 186 00:10:09.836 --> 00:10:14.010 to actually go through each song if you are using the for 187 00:10:14.010 --> 00:10:19.220 loop you are in the right frame of mind so you type for song in tracks. 188 00:10:20.360 --> 00:10:23.950 Remembering that tracks contains a list of tuples and 189 00:10:23.950 --> 00:10:28.416 the for loop is gonna go through and allocate the individual song or 190 00:10:28.416 --> 00:10:32.741 the value from pulling it from the tuple into the variable song. 191 00:10:32.741 --> 00:10:37.623 And from there we can literally just 192 00:10:37.623 --> 00:10:42.835 type print, adding the tap\t song. 193 00:10:42.835 --> 00:10:44.055 So, we can actually run that. 194 00:10:45.890 --> 00:10:48.670 And you can see that we are able to actually print out the title, 195 00:10:48.670 --> 00:10:49.420 artist and year. 196 00:10:49.420 --> 00:10:52.260 And for each song we have actually just printed out the tuple. 197 00:10:52.260 --> 00:10:56.020 Now alternatively you might have actually further expanded the individual song 198 00:10:56.020 --> 00:10:58.380 tuples, and you can do that quite easily as well. 199 00:10:58.380 --> 00:11:03.208 So what we could have done is under the for loop we can type track, 200 00:11:03.208 --> 00:11:06.390 title = song. 201 00:11:06.390 --> 00:11:10.500 So I'm packing the tuple into the variables called Track and Title. 202 00:11:10.500 --> 00:11:14.335 Then we can actually leave the slash-T in there, but 203 00:11:14.335 --> 00:11:20.644 we wanna start using replacement fields, and we'll put something like track number, 204 00:11:20.644 --> 00:11:24.496 and then title column, another replacement field. 205 00:11:26.548 --> 00:11:32.392 And of course down here we've actually put .format, 206 00:11:32.392 --> 00:11:35.706 which would be track, total. 207 00:11:35.706 --> 00:11:37.100 So we can actually run that code, 208 00:11:37.100 --> 00:11:42.800 and we'll individually print out the track number and obviously the total as well. 209 00:11:42.800 --> 00:11:44.800 So that's my solution to the challenge. 210 00:11:44.800 --> 00:11:46.920 And just a couple more questions for you to think about. 211 00:11:46.920 --> 00:11:50.670 So once you've actually represented your alburn collection as tuples, 212 00:11:50.670 --> 00:11:54.680 we'll destroy all the tuples in the list, or we'll just store them in another tuple. 213 00:11:54.680 --> 00:11:55.480 I'll just say that again. 214 00:11:55.480 --> 00:11:58.260 Once you've represented your album collection as tuples, 215 00:11:58.260 --> 00:12:01.420 we'll destroy all the tuples in the list, or in another tuple. 216 00:12:01.420 --> 00:12:05.290 But the answer to that one is that in programming there's certainly incorrect 217 00:12:05.290 --> 00:12:08.520 answers because they have solutions that don't work. 218 00:12:08.520 --> 00:12:10.320 But there's really one correct answer. 219 00:12:10.320 --> 00:12:12.720 So, with that said, you have multiple options, but 220 00:12:12.720 --> 00:12:15.800 often there is one that is better in a given situation. 221 00:12:15.800 --> 00:12:18.910 So unless you are positive that you will never buy another album. 222 00:12:18.910 --> 00:12:22.230 You'd be better off using a list to store the albums in, because of course, once 223 00:12:22.230 --> 00:12:26.390 you've actually allocated something in a tuple, you can't actually change it again. 224 00:12:26.390 --> 00:12:27.180 So if you had a list, 225 00:12:27.180 --> 00:12:31.010 you could actually pin new items to the list as you acquired new albums. 226 00:12:31.010 --> 00:12:33.170 Second question is, although a tuple is immutable, 227 00:12:33.170 --> 00:12:37.060 what would be the status of a tuple that contained a mutable object such as a list. 228 00:12:37.060 --> 00:12:40.890 So that question again is, although a tuple is immutable, what would be 229 00:12:40.890 --> 00:12:45.880 the status of a tuple that contained immutable objects, such as a list. 230 00:12:45.880 --> 00:12:48.010 So a tuple is immutable, as we've established, so 231 00:12:48.010 --> 00:12:49.940 its contents cannot be changed. 232 00:12:49.940 --> 00:12:52.340 But, however, if a tuple contained a list, for 233 00:12:52.340 --> 00:12:57.060 example, as one of its elements, then the contents of the list itself can change. 234 00:12:57.060 --> 00:13:00.080 So to see this in action I'm gonna type in a little bit of code just to show 235 00:13:00.080 --> 00:13:01.340 you what I mean. 236 00:13:01.340 --> 00:13:03.180 The best way to do that is just to paste this in. 237 00:13:03.180 --> 00:13:05.360 I'm gonna paste all this code in. 238 00:13:05.360 --> 00:13:08.750 I'm gonna temporarily, I've shut down the run window and I'm just going to 239 00:13:08.750 --> 00:13:12.070 comment out this code so you'll still have it available for download. 240 00:13:12.070 --> 00:13:14.150 This is the answer to the second question, 241 00:13:14.150 --> 00:13:16.320 or it explains a little bit better, anyway. 242 00:13:16.320 --> 00:13:20.250 Looking at this code you'll notice how I've actually created a topple for 243 00:13:20.250 --> 00:13:23.460 each of the individual tracks, but they're now in a list. 244 00:13:23.460 --> 00:13:25.900 With the square brackets indicating it's in a list. 245 00:13:25.900 --> 00:13:29.130 So the contents of that mutable list tracks has actually changed. 246 00:13:29.130 --> 00:13:32.240 So you can see now that we've actually changed the immutable tuple 247 00:13:32.240 --> 00:13:34.430 to store the songs as a list of tuples, 248 00:13:34.430 --> 00:13:37.050 noting the square brackets I've actually put around there now. 249 00:13:37.050 --> 00:13:40.880 So this is now a list that still contains individual tuples. 250 00:13:40.880 --> 00:13:44.540 And what we can then do is, we can actually apend, quite happily actually, 251 00:13:44.540 --> 00:13:47.840 a pint another track to the list using the lists append method. 252 00:13:47.840 --> 00:13:51.390 You can see that their showing that on line 26, and again you can see that in 253 00:13:51.390 --> 00:13:55.110 operation on line 29 where we're actually appending an additional track. 254 00:13:55.110 --> 00:13:59.160 So the tuple still contains four elements, title, artist, year, and tracks. 255 00:13:59.160 --> 00:14:00.630 And that hasn't changed. 256 00:14:00.630 --> 00:14:04.440 The contents of the immutable list track, tracks I should say, has changed, 257 00:14:04.440 --> 00:14:06.770 just to run this just to confirm it's working. 258 00:14:06.770 --> 00:14:07.300 There's no errors. 259 00:14:07.300 --> 00:14:08.930 You can see we're able to actually get that to run. 260 00:14:08.930 --> 00:14:12.750 So that's an important clarification there again, that a tuple is immutable. 261 00:14:12.750 --> 00:14:14.900 So its contents can't be changed. 262 00:14:14.900 --> 00:14:17.960 However, if a tuple contains a list, as it did in this example that I've just 263 00:14:17.960 --> 00:14:22.040 showed you that the contents of the list itself can actually change and 264 00:14:22.040 --> 00:14:24.020 you saw it actually working on the screen. 265 00:14:24.020 --> 00:14:27.820 This concept where you can actually change a list that's within a tuple 266 00:14:27.820 --> 00:14:32.380 has implications later in the course when we start looking at dictionaries and keys. 267 00:14:32.380 --> 00:14:34.650 It's also useful in many applications. 268 00:14:34.650 --> 00:14:37.310 For example if you ever replace your vinyl collection 269 00:14:37.310 --> 00:14:41.860 records with CDs you might've noticed that the CDs come with bonus tracks and 270 00:14:41.860 --> 00:14:43.740 now having tuple can cope with that. 271 00:14:43.740 --> 00:14:45.130 The way that we've actually developed it. 272 00:14:45.130 --> 00:14:46.930 So that's it. That's the end of this video. 273 00:14:46.930 --> 00:14:47.920 I'll see you in the next video.