Python Memory Management and Tips Transcripts
Chapter: Efficient data structures
Lecture: Cycle busting part 1

Login or purchase this course to watch this video and the rest of the course contents.
0:00 Alright, let's go and change this program just a little bit to work with
0:05 our version that doesn't have cycles.
0:07 I'm gonna have this "app_no_cycles", and let's even print it out.
0:14 So we can see here, print "version with no cycles" this is the one that has
0:19 data structures that use cycles. Okay,
0:21 so what we're gonna do is we're gonna make a tiny difference here.
0:24 Let's add one more person, a person
0:25 3, Zoe, and it'll still ask
0:30 "do you want to have these people like this?"
0:33 And we can go, we're gonna change this right here,
0:37 "TODO: improve this with new data structures".
0:44 Let's go ahead and just ask whether people are friends. And then down here,
1:01 We'll just say "yes" like this,
1:03 "Yes if p1 in p2.friends" for the moment. Again,
1:10 we're going to be changing this. "else,
1:12 no". like this. Alright,
1:17 other than that, that's the same.
1:19 And we can also ask this for "is p1 a friend of p3" just
1:24 so that we have, you know,
1:25 sort of both cases covered. Alright,
1:26 let's run this thing and see how it's doing.
1:30 Alright. Create cycles? Yes.
1:33 Is Michael a friend of Sarah?
1:34 Yes. Is Michael Friend Zoe?
1:36 No. Program closing. Ah, cycles found.
1:39 Okay, that's a problem. Let's just run it one more time with no cycles.
1:42 No. No friends. We didn't create the friend relationships and no cycles and
1:47 so on. We're also not zeroing out
1:49 Zoe, so I guess we could go ahead and do that
1:51 here as well, that way you'll see them all go together.
1:57 Okay, Super. Now we've got the stage set.
2:00 How are we gonna change this?
2:02 How are we going to store them
2:03 so they don't create these references back to each other and create these cycles and all
2:07 the problems that can come from there?
2:08 Well, we're gonna use a different data structure rather than storing them on the classes
2:13 themselves, like we had indicated right there.