파이썬 기초 학습기-4

SeungHo_LEE·2025년 7월 8일

중간고사

생각보다 어려웠던 문제도 있었지만 우선 94점 4등으로 A안정권에는 들어갔다.

기말고사에는 A+를 위해 100점을 맞아야 할것같다.

기말고사는

  • 컨테이너 자료형의 개념,활용
  • 함수 모듈과 패키지
  • 클래스와 객체
  • 파일입출력

이 범위인데 중간고사의 문제 특성을 보아 생각보다 개념문제OX를 많이 15문제정도로 많이내시는 편이다.

수업시간에 했던 실습 코드에 빈칸을 뚫어서 문제를 내신다. 이부분은 수업시간에 했던 코드를 외우는것으로 대비해야겠다.


컨테이너 자료형

오늘 배웠던 컨테이너 자료형에대해 정리하고 글을 마치겠다.

  • List
    가변객체 리스트는 다양한 종류의 자료를 여러개 저장할 수 있다.
    각 데이터는 index라는 번호가 붙는데 이 번호는 0부터 시작한다.
    numList = [10,20,30,40] 에서 numList[1]이면 첫번째가 아니라 두번째를 의미한다.

  • append()
    리스트의 가장 마지막칸에 새로운 값을 추가하는 기능
    numList.append(i) 의 예시로 사용하면 된다.

  • sort()
    리스트의 항목들을 오름차순으로 정렬하는 기능
    내림차순으로 하고싶으면 sort(reverse=True)로 쓰면된다.

  • len()
    리스트안에 총 몇개가 있는지 알려주는 기능
    len(numList)로 사용하면된다.

  • del()
    특정 위치의 index를 삭제할때 사용하는 기능
    del numList[1] 로 사용하면된다. 주의점 index는 []를 사용해야한다.

  • copy()
    리스트를 복사할때 사용하는 기능이다.
    = 연산자를 사용하면 값이 바뀌면 원본도 바뀌는 문제가 발생한다.

여기서 shallow copy와 deepcopy에 차이점이 있는데 이부분을 강조하셨다.

가장 큰 차이점은 둘다 List를 복사하지만 shallow copy는 다차원리스트를 복사하지 않는다.
리스트안에 리스트까지 복사하지않는다는 뜻이다.

그래서 shallow copy는 다차원리스트에서 값을 수정할때 원본도 바뀔 가능성이 있다.

중요한점

copy()는 외부의 리스트만 복사하고 내부의 객체는 복사하지 않는다. 그래서 내부의 객체의 주소만을 복사하기 때문에 내부 객체에 리스트가 있다면 그 2차원 리스트의 데이터의 주소가 달라지면 그것을 원본에도 반영해버린다. 2차원 리스트의 값 자체가 바뀐것이기 때문이다.

쉬운 비유로 알아보기 📁
원본 리스트 x: [사진1, 사진2, '공유문서_링크']가 들어있는 폴더라고 생각해보세요.

얕은 복사 y: x를 얕은 복사하면, 새로운 폴더 y가 생겨요. 그리고 그 안에 사진1, 사진2를 복사해 넣고, '공유문서_링크'는 그대로 복사해서 넣어요.

결과: 이제 폴더는 x, y 두 개지만, 두 폴더 안의 링크는 동일한 하나의 공유 문서를 가리켜요. y 폴더의 링크로 문서를 열어서 내용을 수정하면, 나중에 x 폴더의 링크로 열었을 때도 수정된 내용이 보이는 것과 같은 원리랍니다.


오늘 배운 코드 실습

리스트에 사용자가 입력한 양의정수를 저장하고 합과 평균을 구하는 코드다.

#리스트 예제 평균계산 리스트 합계 for문 / 평균은 갯수인 len(numList)로 나눠준다
numList=[]

while True:
    num = int(input("-1을 입력할때까지 임의의 양의정수를 입력하세요:"))
    if num == -1 :
      break
    numList.append(num)

sum=0
#두가지 방법 모두 알고있어야함 위의 방법은 파이썬에서만 아래는 다른언어에서
'''
for i in numList:
    sum+=i
'''
for i in range(len(numList)):
    sum += numList[i]

average=sum/(len(numList))

print(f"합계: {sum}, 평균: {average}") 

이번 중간고사에서도 나온 부분이지만 break의 위치가 어디에 들어가느냐에따라 코드에 오류발생가능성이 생길수 있다.


profile
게임개발자를 꿈꾸는 대학생입니다.

0개의 댓글