본문 바로가기
정보

인공지능 활용을 위한 파이썬 기초_03 리스트 : 모아모아 다모아!

by 모오오어 2020. 9. 18.
반응형
SMALL

 

 

 

03 리스트 : 모아모아 다모아!

파이썬에서 여러 자료를 담는 자료형인 '리스트'와

순서가 있는 자료형인 시퀀스에 대해서 대해 조금 더 배워봅시다.

 

1. 리스트의 활용

 

 

1. 리스트에 원소 추가하기

리스트에 원소를 추가하는 방법은 다음과 같습니다.

  • 원소 추가 : 리스트이름.append(자료)

단, 추가한 원소는 리스트의 마지막 원소 뒤에 추가됩니다. (빈 리스트라면 가장 처음위치)

이렇게 해봐요!

  1. 빈 리스트 my_list를 하나 선언해봅시다.

  2. my_list에 숫자 5, 4, 2, 1을 차례대로 넣어봅시다.

Tip!

  • 리스트 이름이 my_list이니 다음과 같이 작성해야겠죠? : my_list.append(__)
  • 리스트의 내용을 확인하려면 이를 출력해보면 되겠죠?

 

2. 리스트 원소 삽입

리스트에 원소를 삽입하는 방법은 다음과 같습니다.

  • 원소 삽입 : 리스트이름.insert(인덱스, 자료)

이렇게 해봐요!

  1. 숫자 5, 4, 2, 1이 차례대로 담긴 리스트 my_list를 만들어봅시다.

  2. my_list에 숫자 3을 숫자 4와 2 사이에 넣어봅시다

Tip!

  • 리스트 이름이 my_list이니 다음과 같이 작성해야겠죠? : my_list.insert(__ , __)
  • 리스트의 내용을 확인하려면 이를 출력해보면 되겠죠?
  • 인덱스는 0부터 시작하죠!

 

3. 리스트 내부의 원소 삭제하기

리스트에 원소를 삭제하는 방법은 다음과 같습니다.

  • 원소 삽입 : 리스트이름.remove(삭제할 자료)

단, 리스트 안에 존재하지 않는 원소를 지우려고 하면 오류가 발생해요!

아래 실습을 따라해보면서 리스트 내부의 원소를 삭제하는 방법을 익혀봅시다.

이렇게 해봐요!

  1. 숫자 5, 2, 4, 3, 2, 1이 차례대로 담긴 리스트 my_list를 만들어봅시다.

  2. my_list에 있는 숫자 2를 한 번 없애봅시다.

Tip!

  • 리스트 이름이 my_list이니 다음과 같이 작성해야겠죠? : my_list.remove(__)
  • 리스트의 내용을 확인하려면 이를 출력해보면 되겠죠?

중복 시 가장 앞에 있는 원소를 지운다 ex) 앞의 2

 

리스트의 원소 정렬하기

리스트 안에 있는 원소를 정렬하는 방법은 다음과 같습니다.

  • 원소 정렬 : 리스트이름.sort()

  • 숫자는 오름차순:1,2,3,4,5
  • 문자열은 사전순으로 리스트가 정렬됩니다: a,b,c,d,e

이렇게 해봐요!

  1. 숫자 5, 4, 3, 2가 차례대로 담긴 리스트 my_list를 만들어봅시다.

  2. my_list를 오름차순으로 정렬해봅시다.

Tip!

  • 리스트 이름이 my_list이니 다음과 같이 작성해야겠죠? : my_list.sort()
  • 리스트의 내용을 확인하려면 이를 출력해보면 되겠죠?

 

2. 시퀀스 자료형

 

문자열과 리스트는 순서가 있는 자료형이다=> 시퀀스

시퀸스의 특징

 

시퀀스의 인덱싱과 슬라이싱

  • 인덱싱 : 시퀀스의 한 원소를 가져오는 것
  • 슬라이싱 : 시퀀스의 일부분을 가져오는 것

이렇게 해봐요!

  1. 문자열 “Impossible”이 담긴 변수 my_str을 만들어봅시다.

  2. 리스트 ["Apple", "Banana", "Chamwae", "Durian"]이 차례대로 담긴 변수 my_list를 만들어봅시다.

  3. 리스트 my_list에서 인덱싱을 이용해 변수 var1에 "Chamwae"를 넣어봅시다.

  4. 문자열 my_str에서 슬라이싱을 이용해 변수 var2에 "possible"을 넣어봅시다.

Tip!

  • 슬라이싱을 할 때 숫자를 적어주지 않을 수도 있어요! 다음 예제를 함께 살펴볼까요?

  • 첫번째 숫자를 생략하면 맨 앞에서,
  • 두번째 숫자를 생략하면 맨 뒤까지 라는 의미를 가지고 있어요.

 

시퀀스의 길이와 멤버 조사하기

  • 길이 : len(시퀀스)
  • 멤버 조사 : 원소 in 시퀀스 (존재하면 True, 존재하지 않으면 False)

이렇게 해봐요!

  1. 문자열 "Impossible"이 담긴 변수 my_str을 만들어봅시다.

  2. 리스트 ["Apple", "Banana", "Chamwae", "Durian"]이 담긴 변수 my_list를 만들어봅시다.

  3. len을 이용해서 변수 var1에 my_str의 길이를 넣어봅시다.

  4. in을 이용해서 "Egg"가 my_list에 들어있는지 확인하고, 이 결과(True or False)를 변수 var2에 넣어봅시다.

 

시퀀스의 연결과 반복

  • 연결 연산 : + - 두 시퀀스를 연결해줍니다(with 시퀀스)
  • 반복 연산 : * - 한 시퀀스를 반복합니다(with 숫자)

이렇게 해봐요!

  1. 문자열 "Py"가 담긴 변수 str1과 문자열 "thon"이 담긴 변수 str2를 만들어봅시다.

  2. 리스트 [3, 6, 9]가 담긴 변수 my_list를 만들어봅시다.

  3. str1과 str2를 연결한 문자열을 변수 var1에 넣어봅시다

  4. my_list를 3번 반복한 리스트를 변수 var2에 넣어봅시다.

 

부산행 기차가 지금 출발합니다!

부산행 기차가 사람들을 태우고 출발하려 하고 있어요!
기차역에 설 때마다 여러 이벤트가 발생합니다.
우리가 배웠던 리스트의 활용으로 차장님을 도와줍시다!

오른쪽 지시에 따라 주어진 임무를 수행해보세요!

 

과연 이번에도 훔쳐갈 수 있을까?

지난번에 보석을 도둑맞은 보석상 다현과 쯔위는 인덱스를 알아보지 못하도록 매우 많은 보석을 들고 이동하고 있어요.

인덱싱와 슬라이싱을 응용해서, 이번에도 저 보석들을 한번 훔쳐볼까요?

오른쪽의 지시대로 다현과 쯔위의 보석을 훔쳐봅시다!

 

 

아이돌 탐구

아이돌을 좋아하는 경민이는 친구 호준이에게 아이돌에 대해 알려주기 위해 아이돌 그룹과 멤버들을 정리해놓았어요.

요즘 부쩍 아이돌에 관심이 생긴 호준이는 경민이가 만든 아이돌 정리표를 보고 열심히 공부하고 있습니다.

호준이와 함께 아이돌을 탐구해보아요!

수능 금지곡

고3인 유현이는 수능을 1주일 앞두고 친구에게 좋은 선물을 주고 싶어합니다. 그 중에서도, 중독성이 가장 강한 ‘링딩동’ 노래를 부르려고 하는데, 유현이는 'ring', 'ding', 'dong', 'diggi'라는 가사의 일부분만 알고 있습니다.

오른쪽 실습에서 시퀀스의 두 연산(+, *)을 이용해 친구를 괴롭히러 가봅시다.

 

문자열로 무기를 강화해서 나만의 무기를 만들어봅시다!

엘리스에서 최근 출시한 게임 금코토M에서는 다음과 같이 무기 강화를 진행합니다.

세 문자열 item1, item2, item3이 주어졌을 때, 이들을 이어붙인 문자열 + “무기” 형태의 무기 weapon이 완성됩니다.
예를 들어,

의 결과를 출력할 수 있습니다.

변수와 시퀀스의 연결 연산을 이용해서 여러분만의 무기를 만들어봅시다!

이렇게 해봐요!

  1. 변수 item1, item2, item3을 선언하고, 문자열을 자유롭게 넣어봅시다.

  2. item1, item2, item3과 “무기” 문자열을 차례대로 이어 붙여서 여러분의 무기 weapon을 만들어봅시다.

  3. 만든 무기 weapon을 출력해봅시다.

weapon은 아래와 같은 형식이어야 합니다.

remove를 잘 쓰려면 우선 있는지부터 확인!

리스트에서 .remove()는 원소를 삭제하는 데에 쓰이지만, 만약 그 원소가 리스트 내부에 없을 경우, 오류가 발생합니다.

따라서 우리는 지우려는 원소가 리스트에 있는지 확인한 다음, 원소를 지우거나 다른 조치를 취해야 합니다.

아래의 절차를 따라서 리스트 안의 원소의 값을 오류 없이 제거해봅시다.

 

이렇게 해봐요!

다음 과정을 통해 "Durian"과 "Pineapple"을 지워봅시다.

  • 원소가 있다면 : 해당 원소를 리스트에서 지웁니다.
  • 원소가 없다면 : 해당 원소가 리스트 안에 없다는 문장을 출력합니다. (“원소은(는) 리스트 안에 없습니다!”)

 

 

반응형
LIST

댓글