6. 리스트

【배우기】


엔트리로 해보자

파이선으로 해보자

리스트는 변수를 확장한 개념이다. 변수에는 기본적으로 한 번에 하나의 자료만 저장할 수 있지만 리스트는 여러 개의 자료를 한꺼번에 저장할 수 있다.


이미지. 마트에서 살 물건이 적힌 리스트를 보고 있는 사람의 그림

1엔트리로 해보자

가. 리스트 만들기
이미지. 속성 탭의 리스트 칸의 스크린샷

[속성] 탭의 리스트 추가하기로 [먹고 싶은 간식] 리스트 추가하기

② 리스트 항목에 떡볶이, 순대 추가하기

나. 리스트에 추가하기
1) 순서대로 추가하기
이미지. 시작하기 버튼을 클릭했을 때 블록, 만두 항목을 먹고싶은 간식에 추가하기 블록, 핫도그 항목을 먹고 싶은 간식에 추가하기 블록이 연결되어 있는 스크린샷

[예제코드]

[시작] 꾸러미 - [시작하기 버튼을 클릭했을 때] 블록

[자료] 꾸러미 - [O 항목을 먹고 싶은 간식에 추가하기] 블록 2개 연결하기

[O 항목을 먹고 싶은 간식에 추가하기]의 O에 만두 입력하기

[O 항목을 먹고 싶은 간식에 추가하기] 의 O에 핫도그 입력하기

[실행결과]
이미지. 먹고싶은 간식 리스트에 1. 떡볶이, 2. 순대, 3. 만두, 4. 핫도그가 있는 화면의 스크린샷
2) 임의의 위치에 추가하기
이미지. 시작하기 버튼을 클릭했을 때 블록, 떡볶이 항목을 먹고 싶은 간식에 추가하기 블록, 순대 항목을 먹고 싶은 간식에 추가하기 블록, 만두 항목을 먹고싶은 간식에 추가하기 블록, 핫도그 항목을 먹고 싶은 간식에 추가하기  블록, 라면을 먹고싶은 간식의 1번째에 넣기 블록이 연결되어 있는 스크린샷

[예제코드]

[자료] 꾸러미 - [O을(를) 먹고 싶은 간식의 O번째에 넣기] 블록

[O을(를) 먹고 싶은 간식의 O번째에 넣기] 블록의 O에 라면, 1 입력하기

[실행결과]
이미지. 먹고싶은 간식 리스트에 1. 라면, 2. 떡볶이, 3. 순대, 4. 만두, 5. 핫도그가 있는 화면의 스크린샷
3) 리스트의 내용 바꾸기
이미지. 시작하기 버튼을 클릭했을 때 블록, 떡볶이 항목을 먹고 싶은 간식에 추가하기 블록, 순대 항목을 먹고 싶은 간식에 추가하기 블록, 만두 항목을 먹고싶은 간식에 추가하기 블록, 핫도그 항목을 먹고 싶은 간식에 추가하기  블록, 라면을 먹고싶은 간식의 1번째에 넣기 블록, 먹고 싶은 간식 2번째 항목을 라볶이로 바꾸기 블록이 연결되어 있는 스크린샷

[예제코드]

[자료] 꾸러미 - [먹고 싶은 간식 O번째 항목을 O(으)로 바꾸기] 블록

[먹고 싶은 간식 O번째 항목을 O(으)로 바꾸기]블록의 O에 2, 라볶이 입력하기

[실행결과]
이미지. 먹고싶은 간식 리스트에 1. 라면, 2. 라볶이, 3. 순대, 4. 만두, 5. 핫도그가 있는 화면의 스크린샷
4)리스트의 내용 삭제하기
이미지. 시작하기 버튼을 클릭했을 때 블록, 떡볶이 항목을 먹고 싶은 간식에 추가하기 블록, 순대 항목을 먹고 싶은 간식에 추가하기 블록, 만두 항목을 먹고싶은 간식에 추가하기 블록, 핫도그 항목을 먹고 싶은 간식에 추가하기  블록, 라면을 먹고싶은 간식의 1번째에 넣기 블록, 먹고 싶은 간식 2번째 항목을 라볶이로 바꾸기 블록, 3번째 항목을 먹고 싶은 간식에서 삭제하기 블록이 연결되어 있는 스크린샷

[예제코드]

[자료] 꾸러미 - [먹고 싶은 간식 O번째 항목을 O(으)로 바꾸기] 블록

[먹고 싶은 간식 O번째 항목을 O(으)로 바꾸기]블록의 O에 2, 라볶이 입력하기

[실행결과]
이미지. 먹고싶은 간식 리스트에 1. 라면, 2. 라볶이,3. 만두, 4. 핫도그가 있는 화면의 스크린샷
다. 코딩해보기
1) 국어, 수학, 사회, 과학으로 이루어진 교과서 리스트를 만든 후 리스트의 내용을 국어, 수학, 수학 익힘책, 사회, 과학, 실험 관찰로 바꿔 보자.
이미지. 속성 탭 리스트에 국어 수학 사회 과학이 추가된 스크린샷
이미지. 시작하기 버튼을 클릭했을 때 블록, 수학 익힘책을 교과서의 3번째에 넣기 블록, 실험관찰을 교과서의 6번째 넣기 블록이 연결되어 있는 스크린샷
2)떡볶이, 아이스크림, 피자, 김밥으로 이루어진 간식 리스트를 만들고 엔트리봇이 리스트 중 한 가지를 무작위로 말하게 만들어 보자
이미지. 속성 탭 리스트에 떡볶이, 아이스크림, 피자, 김밥이 추가된 스크린샷
이미지. 시작하기 버튼을 클릭했을 때 블록, 간식의 1부터 4 사이의 무작위 수 번쨰 항목을 말하기 블록이 연결되어 있는 스크린샷

2파이선으로 해보자

가. 리스트의 생성과 추가

리스트는 대괄호([ ]) 안에 값들을 선언하면 된다. 리스트를 생성한 다양한 예다. cc와 같이 다양한 형식을 섞어서 리스트를 만들 수도 있다.

예제코드,6_1.py

aa=[1,2,3,4,5]

bb=[‘도윤’,‘서하’]

cc=[10,20.3,‘abc’]


print(aa,bb,cc)

이미지. 6_1.py의 순서도. 시작, aa=[1,2,3,4,5], bb=['도윤', '서하']), cc=[10, 20.3, 'abc'], print(aa, bb, cc), 종료
실행결과

> 6_1.py

[1, 2, 3, 4, 5] [‘도윤’, ‘서하’] [10, 20.3, ‘abc’]

리스트는 정수, 문자열, 실수 등 서로 다른 데이터 형식을 하나로 묶을 수 있다. 리스트 aa에는 정수 [1, 2, 3, 4, 5]가, 리스트 bb에는 문자열 [‘도윤’, ’서하’]가, 리스트 cc에는 정수, 실수, 문자열이 혼합된 [10,20.3, ’abc’]가 대입되어 있다. 다음은 ‘리스트 이름.append(값)’ 함수와 ‘리스트 이름.insert(위치, 값)’함수를 사용해서 리스트에 값을 추가하는 예제 코드다

예제코드,6_2.py

aa=[1, 2, 3, 4, 5]

bb=[1, 2, 3, 4, 5]

aa.append(6)

bb.insert(2, 10)


print(aa)

print(bb)

이미지. 6_2.py의 순서도. 시작, aa=[1,2,3,4,5], bb=[1,2,3,4,5], aa.append(6), bb.insert(2, 10), print(aa), print(bb), 종료
실행결과

> 6_2.py

[1, 2, 3, 4, 5, 6]

[1, 2, 10, 3, 4, 5]

리스트 aa와 리스트 bb는 모두 [1, 2, 3, 4, 5]로 생성되어 있다. ‘aa.append(6)’를 사용하면 리스트 aa의 값이 [1, 2, 3, 4, 5, 6]로 추가된 것을 확인할 수 있다. 이와 같이 ‘리스트 이름.append(값)’ 함수는 리스트 제일 뒤에 항목을 추가하는 함수다. bb.insert(2, 10)를 사용하면 리스트 bb의 값이 [1, 21, 0, 3, 4, 5]로 지정한 리스트 bb[2] 값에 10이 추가된 것을 확인할 수 있다. 이와 같이 ‘리스트 이름.insert(위치, 값)’ 함수는 지정한 위치에 값을 추가하는 함수라는 것을 확인할 수 있다

나. 리스트 값 사용하기

리스트의 항목에 접근하려면 ‘리스트 이름[위치]’를 사용한다. 다음은 ‘리스트 이름[위치]를 사용해서 리스트의 항목에 접근하는 예제 코드다.

예제코드,6_3.py

aa=[1, 2, 3, 4, 5]


print(aa[0])

print(aa[0]+aa[2])

이미지. 6_3.py의 순서도. 시작, aa=[1,2,3,4,5], print(aa[0]), print(aa[0]+aa[2]), 종료
실행결과

> 6_3.py

1

4

‘리스트 이름[위치]’는 리스트의 해당 위치에 있는 값에 접근하는 함수다. print(aa[0]) 명령은 aa[0] 번째 값인 1이 출력되며, print(aa[0]+aa[2]) 명령은 리스트의 aa[0] 값과 aa[2]의 값인 1과 3의 합인 4가 출력된다.

다. 여러 개의 리스트 값 사용하기

리스트에 접근할 때 콜론(:)을 사용해서 범위를 지정할 수 있다. ‘리스트 이름[시작:끝+1]’로 지정하면 리스트의 모든 값이 나온다. 콜론 뒤에 오는 수에 해당하는 리스트 값은 포함되지 않는 점에 주의해야한다.

예제코드,6_4.py

aa=[1, 2, 3, 4, 5]


print(aa[0:5])

이미지. 6_4.py의 순서도. 시작, aa=[1,2,3,4,5], print(aa[0:5]), 종료
실행결과

> 6_4.py

[1, 2, 3, 4, 5]

리스트 aa가 [1, 2, 3, 4, 5]로 생성되어 있으므로 ‘print(aa[0:5])’는 리스트 aa[0]의 값부터 aa[4]의 값까지이므로 리스트 aa 전체가 출력된다.

라. 리스트 값 변경하기

리스트 값을 변경하는 방법은 다양하다. 다음은 다양한 방법으로 리스트의 값을 변경하는 예제 코드다.

예제코드,6_5.py

aa=[1 ,2, 3, 4, 5]

aa[1]=3

aa[2:4]=[2, 3]

del (aa[0])


print(aa)

이미지. 6_5.py의 순서도. 시작, aa=[1,2,3,4,5], aa[1]=3, aa[2:4]=[2,3], del (aa[0]), print([aa]), 종료
실행결과

> 6_5.py

[3, 2, 3, 5]

리스트 aa가 [1, 2, 3, 4, 5]로 생성되어 있다. aa[1]=3을 실행하면 aa[1]의 값 2가 3으로 변경되어 [1,3, 3, 4, 5]가 된다. 다음 행의 aa[2:4]=[2, 3]으로 aa[2]번째 값부터 aa[3]값까지가 2, 3으로 변경되어 [1, 3, 2, 3, 5]가 된다. 다음 행의 del(aa[0]) 함수로 aa[0]의 값인 1이 삭제되어 list aa는 [3, 2, 3, 5]가 된다.

마. 코딩해 보기
1) [1,2,3,4,5]로 리스트를 생성한 후 리스트의 값이 [1,3,5,7,9]로 변경되도록 코딩해 보자.

aa=[1, 2, 3, 4, 5]

aa[1:5]=[3, 5, 7, 9]

print(aa)

2) [1, 2, 3, 4, 5]로 리스트를 생성한 후 리스트의 값이 [1, 3, 5, 5]로 변경되도록 코딩해보 자.

bb=[1, 2, 3, 4, 5]

bb[3]=5

del (bb[1])


print(bb)

생각해 보기

1) [‘불고기’, ‘김치’, ‘비빔밥’, ‘초밥’]이라는 리스트를 만든 후 [‘불고기’, ‘김치’, ‘비빔밥’]라는 리스트로 바꿀 수 있도록 코딩해 보자.

2) [1, 3, 5, 4, 2]라는 리스트를 [1, 2, 3, 4, 5] 리스트로 바꿀 수 있도록 코딩해 보자.

3) [‘사랑해’, ‘너를’, ‘내가’, ‘많이’]라는 리스트를 내가 너를 많이 사랑해라는 문자열로 만들어 출력해 보자.