새 노트
Shared on October 12, 2026
I was surprised to see what I did with the new one. There is a OTA here. It's Start. You have to add Start. You have to add Start. You have to add Start with Start. And with the end. Not to add. And plus S. And with the end. You have to add Start with. Please do this.
, of of������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
네 그래서 오늘 배울 내용 상당히 좀 중요합니다. 오늘 배우는 내용도 상당히 중요하고 여기까지만 배우면 아마 거의 대부분의 알고 기본적인 지식들은 다 쌓았다고 할 수 있지 않을까 싶습니다. 네 그래서 오늘 배울 내용은 이제 리스트 제가 앞선 설명에서도 뭔가 리스트라고 설명을 드렸었죠.
그 다음에 list, memory, search 이런 식으로 세 개의 주제에 대해서 배울 거고요. 그래서 스토리라인을 설명을 드리면 우리가 list, memory, search를 하나의 이야기로 설명을 드릴 겁니다. 그래서 우리가 list라는 것이 무엇이고 그것이 메모리 상에서 어떻게 저장이 되는지를 이해를 한 다음에 그러면 어떻게 저장되어 있는지 아니까 거기서 우리가 찾는 방법도 알 수 있습니다.
그래서 우리가 책을 가지고 있을 거고 책이라는 리스트가 있을 거고 책을 책장에 정리하는 방법을 알게 됩니다. 책을 책장에 넣는 방법을 알면 그러면 우리가 책을 찾을 때 어떻게 찾아야 되는지를 알 수 있겠죠. 그 스토리라인입니다. 그래서 리스트라는 책이 있고 우리가 책장이라는 메모리 공간에 어떻게 저장을 할지 어떻게 진열을 할지를 알고 있으면은
우리가 그 책들 중에서 많은 책들 중에서 원하는 책을 딱 찾아서 사용하는 방법을 검색을 할 수 있겠죠. 그 스토리라인으로 이해를 해주시면 됩니다. 어렵지는 않습니다. 하지만 상당히 중요한 내용이라는 점만 알고 계시면 됩니다. 그래서 지금까지 배운 내용으로 저희가 한번 생각을 해봅시다. 저희가 어떤
어 업을 하고 있는데 각 일주일 동안 매일매일 하루에 발견된 고향이란다. 고래. 고래를 몇 번 만났는지를 이런 식으로 저장을 했다고 해요. 그러면 첫째 날에는 다섯 번, 둘째 날에는 네 번, 셋째 날에는 일곱 번, 넷째 날에는 세 번. 이런 식으로 우리가 기록을 하겠죠. 이런 식으로 기록을 해서 우리가 데이터를 저장을 한다고 하면은
어떻게 저장을 해야 될까요? 보시는 것처럼 그림으로 보면 좀 복잡하기는 하지만 뭔가 첫째 날, 첫째 날은 5, 둘째 날은 4, 셋째 날은 7 이런 식으로 데이터를 만들 수 있겠죠. 그래서 파이썬에 우리가 데이터를 저장을 할 때 첫째 날 5라는 오브젝트를 만들고
5라는 오브젝트를 만들고 그것의 이름을 Day1이라고 저장을 하면 되겠죠. 그 다음에 4라는 것을 만든 다음에 그것을 Day2라고 저장을 하면 될 겁니다. 근데 이렇게 하면 상당히 문제가 있죠. 우리가 일주일 정도 이렇게 만드는 건 큰 문제가 없는데 1년치를 만들다 라고 하면 우리가 변화가
So we need to make a barrier of 365. And we need to make a barrier. We need to make a barrier. We need to make a barrier. We need to make a barrier. We need to make a barrier. How can we solve this? 라고 해서 나온 데이터 구조가 이제 리스트라는 데이터 구조가 됩니다.
그래서 자료구조, 먼저 리스트라는 걸 알기 전에 자료구조에 대해서 설명을 드리면 여기에 보이는 것처럼 자료구조는 데이터의 컬렉션, 데이터들을 모아놓는 겁니다. 그래서 앞서 말했던 뭔가 첫째 날에는 다섯 번, 그 다음에 둘째 날에는 네 번 이것들을 하나에 그냥 다 모아놓는 거예요. 그래서 이런 식으로 하나에 모아놓은 컬렉션을 가지고 데이터들을 구조하고
and you can edit it. So for all of you, you can learn the list of the list. Then you can go to the tree or the graph, the tree, the tree, the heat, the stack, the different types of information. I learned a lot about the skills
그래서 여러 개의 자료 구조들이 있는데 그것들이 어떻게 데이터를 조직화하고 어떻게 연산을 할 건지 그래서 목적에 맞춰서 이 목적에서는 이 자료 구조가 좋고 이 목적으로 할 때는 그래프 구조가 좋고 이런 거를 생각을 하셔서 나중에 여러분들이 프로그램을 짤 때 적절한 자료 구조를 선택을 하면 됩니다. 근데 뭐 그런 것들은 다 이제 지금은 고려하지 않고 오늘은
저희 수업에서는 이 리스트, 배열이라고 하는 자료 구조에 대해서 집중을 해서 설명을 드리도록 하겠습니다. 그래서 리스트라는 것은 순서를 가진 데이터입니다. 그래서 우리가 이런 식으로 숫자를 나열을 합니다. 숫자를 여러 개 나열을 하겠죠. 그러면 이 숫자를 나열을 하게 되면은
숫자들은 이제 이렇게 숫자들을 나열을 하고 그것들을 이 대괄 안에 넣어주면은 이 데이터들이 연속적으로 이렇게 묶이는 겁니다 그래서 이런 식으로 우리가 5,4,7,3,2 이거를 이제 뭐 day1, day2, day3 라고 따로 정의하지 않아도 첫 번째는 5, 두 번째는 4, 세 번째는 7 이라는 것을 우리가 알 수 있게 되는 거죠
이런 식으로 자료를 정리하는게 리스트 자료구조다 라고 이해를 해주시면 됩니다. 그래서 실제로 이 리스트라는 것이 어떻게 되냐면은 우리가 오브젠트를 생성을 한다고 했죠. 우리가 숫자 5를 만들건 7을 만들건 200을 만들건 그것들이 생성이 되면은 우리가 뭔가 그것들을 메모리에 저장을 해놔야 됩니다.
그래서 그 메모리 어느 공간에 이러한 데이터들을 만들게 되는 거죠. 5, 4, 7, 3, 2 데이터들을 만들어서 진열을 해놓습니다. 진열을 해놓고 그런 다음에 우리는 메모리 공간에 뒤에서 조금 더 이거는 자세하게 설명이 나올 겁니다. 최소.
It's just a little bit of a feeling. Now we know that the feeling is just now. So we have this kind of space in this memory. We have this kind of space. So you can think about it. There are apartments. But people are all in the room. Objects like 101, 203, 404.
이런 식으로 다 들어갑니다. 그 다음에 그런 식으로 다 들어간 다음에 어느 한 집에서 그 정보들을 다 가지고 있습니다. 1번 사람은 몇 토, 2번 사람은 몇 토, 3번 사람은 몇 토 그것들을 이런 식으로 쭉 연결해서 그 정보들을 가지고 있어요. 한 집에서. 그러면 그 집에 요청을 하면 그 집에서 3번은 어디 있어요? 4번은 어디 있어요? 역시 우리가 요청을 하면 그것들을 주소 몇 토에 있어요? 라는 정보를 주면 우리나라 사백사후에는 누가 있구나.
718호에는 누가 있구나 라는 것을 알 수 있게 되는 것이죠. 네, 그런 식으로 하는 겁니다. 그래서 여러분들이 이제 뒤에 얘기를 하다보면 착각을 하시는 게 이 데이터들이 메모리 공간에 연속적으로 정리가 된다고 이해를 하시는 분이 많이 있기는 한데 실제로는 그렇지 않고 데이터가 흩어져 있고 데이터들은 흩어져 있고 우리가 그 데이터가 어디에 존재하는지에 대한 정보들이
그래서 아파트 단지에 어떤 연속된 코스의 별로 각각이 어떤 집이 있는지를 가지고 있다. 이런 식으로 이해를 해주시면 돼요. 뒤에서 메모리 구조를 설명하면서 더 자세히 설명을 드리겠습니다. 어쨌든 요약을 하면 여러분들이 어떤 데이터들을 만들고 여러 개의 데이터들을 만들고 그것들을 묶어서 순서대로 우리가
관리를 할 수가 있다. 이렇게 변수를 하나하나 다 선언하는 것이 아니라 묶은 데이터를 선언을 하고 그거를 변수 하나로 선언을 해서 사용을 할 수 있고 이렇게 사용할 수 있는 게 리스트 데이터다. 라는 것을 알고 계시면 됩니다. 그래서 이 리스트는 순서가 있다고 했죠. 그래서 맨 앞이 0번이고 문자열에서도 맨 첫 번째 글자가 0번이었죠. 그거랑 마찬가지로 이 리스트도 0번째가 가장 앞에 있습니다. 그래서 얘가 0번, 1번, 2번, 3번, 4번.
So we have connected from the data from the text. It is the same thing. The same thing is the same thing. We can do the same thing in the list. If you understand the same thing, you can easily understand it. So if you have to connect the next step, you can turn the 5. The next step is 0, 1, 2, 3, 4, 5. Oh, it's not bad. Sorry.
그래서 0번을 하면 5번이 나올거고 12를 하면 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 해서 1이라는 걸 가져오고 마이너스 1은 뭐라고 했어요? 마이너스 1은 뒤에서부터 쓴다고 했죠? 마이너스 1은 뒤에서 이거니까 3 마이너스 2면 마이너스 1, 마이너스 2 이렇게 생각하시면 돼요 2 3 4 4 3 2
0, 1, 2, 3, 2, 1, 0, minus 1, minus 2, minus 3 이런 식으로 이해를 해주시면 조금 더 직관적으로 잘 이해를 하실 수 있을 겁니다 그래서 이제 여기서 인덱스의 개수는 당연히 0번부터 m-1까지니까 그러니까 엔겔 리스트를
그러니까 요소가 0번이면 첫 번째 인덱스는 0이고 마지막은 n-1이죠. 그래서 n개의 원소를 부르면, n개의 원소를 만들면 그것의 마지막 인덱스는 n-1이 된다. 이 뜻입니다. 0번부터 시작하니까 당연히 이만큼이 n개겠죠. 이만큼이 n개이니까 마지막 인덱스는 n-1이다. 그래서 그 범위 밖을 하면 우리가 에러 메시지로
이것은 지금 현재의 크기를 벗어난다. 라고 이런 에러를 발생시킬 겁니다. 그래서 우리가 이런 식으로 객체를 만들어서 사용할 수도 있고 이것도 어렵지 않은 것 같아요. 그래서 우리가 웨일이라는 것을 하면 0127이라는 데이터를 가져와서 7이라는 오브젝트의 이름을 third로 정의를 한다.
Third is 7, so if you use the formatting before, we can learn 7. Then, we create a list, but of course, we can't put the data. When you start, there will be no data. In this case, we can't put a list in the hidden list.
당연히 비어있으니까 0번째 인덱스에 접근할 수도 없겠죠. 그 다음에 뒤에서도 접근이 가능하지 않을 겁니다. 이것은 논리적으로 이해를 해주시면 됩니다. 데이터가 없는데 접근하려고 하면 당연히 에러가 발생하겠죠. 그리고 이제 리스트의 가장 큰 장점은 2종 갱체를 포함할 수 있다는 겁니다. 그래서 여러분들이 이제
다른 프로그래머를 쓰다보면은 이공계 전공자분들은 파이썬 말고도 C나 자바 같은 걸 많이 쓸텐데 그런 거 할 때 보면은 우리가 어떤 리스트나 어떤 배열을 만들려고 할 때 이종갱체를 담는 게 상당히 까다롭습니다. 근데 이 파이썬 같은 경우에 제공해주는 리스트는 다양한 타입들을 넣을 수 있어요.
그래서 우리가 어떤 원소를 하면 원소의 기호, 원소의 이름, 원소의 기호, 녹는 적, 끓는 적 이런 식으로 정의를 할 수 있어요 그래서 리스트 안에 앞에 우리가 예시해서는 숫자만 봤었죠 숫자뿐만 아니라 문자도 들어가고 문자랑 숫자랑 동시에 들어가도 되고 더 쉽게 한 거는 이제 리스트 안에 리스트를
그래서 그 리스트들을 또한 활용을 할 수 있겠죠 그래서 보시면은 저희가 데이1은 몇 개, 데이2는 몇 개, 데이3는 몇 개 이런 식으로 묶어서 우리가 리스트 안에 리스트로 또 정리를 할 수 있겠죠 그 다음에 이제 뭐 여기서 우리가 이제 모든
원소들의 녹는 장, 끓는 장, 원소 기호를 저장하고 싶으면 뭐 이런 식으로 섞어서 정의를 할 수도 있고 다양합니다. 그리고 이제 리스트에 우리가 데이터를 넣다가 보면은 잘못된 데이터가 들어가는 경우도 발생하죠. 그럴 때는 쉽게 고칠 수 있습니다. 그래서 뭐 이런 식으로 헬륨이랑 네온이 들어가야 되는데 이제 넌이라는 오타가 들어갔고요. 아르본, 크립톤, 잭슨, 라데온
이 식으로 들어간다. 라고 했을 때 우리가 이 네온을 고치고 싶어요. 그러면은 새로 이 노블레스 노블레스 노블레스 노블레스 노블레스인가 어쨌든 첫 번째를 네온으로 바꿔라. 그러니까 이 명령어는 우리가 네온이라는 객체를 생성을 하고 그 객체를 가리키는 주소를 노블레스 원이 가리키는 주소가 예를 가르쳐라. 가르쳐라.
그래서 기존에 보시면은 아까 메모리의 주소가 연속적으로 저장이 된다고 했죠 그래서 id1, id2, id3, id4, id6 하고 id6는 이 주소를 가리키고 있었어요 근데 이제 그 주소가 이제 이 네온이라는 여덟 번째 어떤 주소를 가리키도록 바꿨다 이런 식으로 바꾸면은 실제로 너온이라는 오브젝트는 사라지진 않지만
물론 나중에 프로그램이 돌면서 사라지긴 하겠지만 이런 식으로 실제로 우리가 접근할 수 없는 어떤 데이터도 남아있고 대신에 이제 neon이라는 것을 이 두 번째 칸에서 가리키게 된다. 그 말을 하고 있습니다. 그래서 이러한 리스트를 기반으로 다양한 내장함수를 제공합니다. 이거는 이제 메소드가 아니고 내장함수죠. 그래서 이런 식으로 인자를 받아야 되고 그래서