해당 글은 제로베이스데이터스쿨 학습자료를 참고하여 작성되었습니다
- 컨테이너 자료형 : 여러 개의 데이터가 묶여있는 자료형 구조
자료 구조 : 컨테이너 자료형의 데이터구조
ex) List, Tuple, Dictionary, Set
(출처:제로베이스데이터스쿨)
- 배열과 같이 여러 개의 데이터를 나열한 자료구조
- 어떤 자료형이든 리스트 안에 넣을 수 있다. 리스트 안에 리스트도 가능
📝입력
userList = [1, 2, '세번째', [4, '번', '째'], 'Five']
print(userList)
🧾출력
[1, 2, '세번째', [4, '번', '째'], 'Five']
- 컨테이너형 자료에는 데이터의 위치에 해당하는 번호가 지정된다(단, 0부터 시작)
(출처:제로베이스데이터스쿨)
📝입력
userList = [1, 2, '세번째', [4, '번', '째'], 'Five']
print(userList)
🧾출력
[1, 2, '세번째', [4, '번', '째'], 'Five']
- 인덱스를 이용하여 1개의 데이터를 조회하는 것
📝입력
userList = [1, 2, '세번째', [4, '번', '째'], 'Five']
print(userList[4])
🧾출력
Five
- 인덱스를 이용하여 여러 개의 데이터를 조회하는 것
- 인덱스가 start <= idx < end에 속하는 데이터만 step간격으로 반환
- 인덱스 0를 기준으로 음수도 가능, list[-1]이 마지막 아이템
- 아래 그림의 리스트에서 list[0:4]로 하면 0~4사이에 있는 'zero'만 반환된다
iterable이란, 하나씩 반환이 가능한 데이터를 의미한다. 문자열, 컨테이너형 등
📝입력
userStr = 'ZeroBaseDataSchool'
print(userStr[:4]) # Zero
print(userStr[4:8]) # Base
print(userStr[8:]) # DataSchool
print(userStr[::-1]) # loohcSataDesaBoreZ
print(userStr[-5:-3]) # ch
🧾출력
Zero
Base
DataSchool
loohcSataDesaBoreZ
ch
- 데이터의 크기(갯수)를 반환해준다
- 문자열의 경우, 문자의 갯수를 반환
- 컨테이너형의 경우, 내부 데이터의 갯수
(출처:제로베이스데이터스쿨)
📝입력
userStr = 'ZeroBaseDataSchool'
print(len(userStr))
print(len([1, 2, [3, 4, 5], 4, 5]))
🧾출력
18
5
- for문을 이용하여 리스트의 아이템조회 자동으로 조회할 수 있다
(출처:제로베이스데이터스쿨)
📝입력
userStr = [1, 2, 3, 5, [1, 2, 3], [4, 5, 6]]
for s in userStr:
print(s)
🧾출력
1
2
3
5
[1, 2, 3]
[4, 5, 6]
컨테이너 안에 컨테이너가 있는 경우, 해당 컨테이너 아이템을 지정하고 인덱싱을 수행한다
📝입력
minScore = 60
scores = [
['국어', 58],
['수학', 78],
['영어', 23],
]
for item in scores:
if item[1] < minScore:
print(f'과락 과목: {item[0]}, 점수: {item[1]}')
🧾출력
과락 과목: 국어, 점수: 58
과락 과목: 영어, 점수: 23
- 다양한 방법으로 리스트를 조회할 수 있다
(출처:제로베이스데이터스쿨)
📝입력
studentCnts = [
[1, 19],
[2, 20],
[3, 22],
[4, 18],
[5, 21],
]
n = 0
while n < len(studentCnts):
classNo = studentCnts[n][0]
cnt = studentCnts[n][1]
print('{}학급 학생 수: {} '.format(classNo, cnt))
n += 1
🧾출력
1학급 학생 수: 19
2학급 학생 수: 20
3학급 학생 수: 22
4학급 학생 수: 18
5학급 학생 수: 21
- 인덱스와 아이템을 한번에 조회
📝입력
sports = ['농구', '수구', '축구', '마라톤', '테니스']
for idx, value in enumerate(sports):
print('{} : {}'.format(idx, value))
🧾출력
0 : 농구
1 : 수구
2 : 축구
3 : 마라톤
4 : 테니스
📝입력
sports = ['농구', '수구', '축구', '마라톤', '테니스']
print('보기 : {}'.format(sports))
favoriteSport = input('가장 좋아하는 스포츠 입력 : ')
for idx, value in enumerate(sports):
if value == favoriteSport:
print('{}(은)는 {}번 째에 있습니다'.format(value, idx+1))
🧾출력
보기 : ['농구', '수구', '축구', '마라톤', '테니스']
가장 좋아하는 스포츠 입력 : 축구
축구(은)는 3번 째에 있습니다
- 존재하는 리스트의 마지막 열에 아이템을 추가한다
📝입력
sports = ['농구', '수구', '축구', '마라톤', '테니스']
print('스포츠 기존목록 : {}'.format(sports))
addSport = input('추가할 스포츠 입력 : ')
sports.append(addSport)
print('스포츠 추가목록 : {}'.format(sports))
🧾출력
스포츠 기존목록 : ['농구', '수구', '축구', '마라톤', '테니스']
추가할 스포츠 입력 : 야구
스포츠 추가목록 : ['농구', '수구', '축구', '마라톤', '테니스', '야구']
- 리스트의 원하는 인덱스에 아이템을 추가한다
📝입력
sports = ['농구', '수구', '축구', '마라톤', '테니스']
print('스포츠 기존목록 : {}'.format(sports))
addSport = input('추가할 스포츠 입력 : ')
addSport_idx = int(input('추가할 위치 : '))
sports.insert(addSport_idx, addSport)
print('스포츠 추가목록 : {}'.format(sports))
🧾출력
스포츠 기존목록 : ['농구', '수구', '축구', '마라톤', '테니스']
추가할 스포츠 입력 : 야구
추가할 위치 : 2
스포츠 추가목록 : ['농구', '수구', '야구', '축구', '마라톤', '테니스']
- 해당하는 위치의 아이템을 삭제한다
- 인수를 넣지 않으면 마지막 아이템을 삭제한다
- 삭제한 아이템을 반환할 수 있다
📝입력
sports = ['농구', '수구', '축구', '마라톤', '테니스']
print('스포츠 기존목록 : {}'.format(sports))
# delSport = input('추가할 스포츠 입력 : ')
delSport_idx = int(input('제거할 위치 : '))
delSport = sports.pop(delSport_idx)
print('스포츠 삭제 후 목록 : {}'.format(sports))
print('스포츠 삭제내역 : {}'.format(delSport))
🧾출력
스포츠 기존목록 : ['농구', '수구', '축구', '마라톤', '테니스']
제거할 위치 : 1
스포츠 삭제 후 목록 : ['농구', '축구', '마라톤', '테니스']
스포츠 삭제내역 : 수구
- 해당하는 위치의 아이템을 삭제한다
📝입력
students = ['유재석', '박찬호', '유재석', '강호동', '유재석']
print('변경 전 : {}'.format(students))
del students[0]
print('변경 후 : {}'.format(students))
🧾출력
변경 전 : ['유재석', '박찬호', '유재석', '강호동', '유재석']
변경 후 : ['박찬호', '유재석', '강호동', '유재석']
- 해당하는 아이템을 삭제한다
📝입력
sports = ['농구', '수구', '축구', '마라톤', '테니스']
print('스포츠 기존목록 : {}'.format(sports))
delSport = input('추가할 스포츠 입력 : ')
delete = sports.remove(delSport)
print('스포츠 삭제 후 목록 : {}'.format(sports))
🧾출력
스포츠 기존목록 : ['농구', '수구', '축구', '마라톤', '테니스']
추가할 스포츠 입력 : 수구
스포츠 삭제 후 목록 : ['농구', '축구', '마라톤', '테니스']
- 리스트끼리 연결한다
📝입력
sports1 = ['농구', '수구', '축구']
sports2 = ['마라톤', '테니스']
print('덧셈 연산자를 활용한 방법')
print('스포츠 기존목록 : {}'.format(sports1 + sports2))
print()
print('extend 함수를 활용한 방법')
sports1.extend(sports2)
print('스포츠 기존목록 : {}'.format(sports1))
🧾출력
덧셈 연산자를 활용한 방법
스포츠 기존목록 : ['농구', '수구', '축구', '마라톤', '테니스']
extend 함수를 활용한 방법
스포츠 기존목록 : ['농구', '수구', '축구', '마라톤', '테니스']
- list.sort(reverse=True/False)는 반환값X, 리스트 정렬을 수행하는 함수
- sorted(list, reverse=True/False)는 정렬된 데이터를 리스트형으로 반환함
- reverse=True는 생략가능
📝입력
userList = ['a', 'c', 'b', '2', '1']
print('list.sort()')
print('오름차순')
userList.sort()
print(userList)
print()
print('sorted()')
print('내림차순')
userList.sort(reverse=True)
print(userList)
print()
print('오름차순 : {}'.format(sorted(userList)))
print('내림차순 : {}'.format(sorted(userList, reverse=True)))
🧾출력
list.sort()
오름차순
['1', '2', 'a', 'b', 'c']
sorted()
내림차순
['c', 'b', 'a', '2', '1']
오름차순 : ['1', '2', 'a', 'b', 'c']
내림차순 : ['c', 'b', 'a', '2', '1']
- 리스트끼리 연결한다
📝입력
students = ['홍길동', '박찬호', '이용규', '강호동', '유재석']
print('슬라이싱을 이용한 뒤집기')
print('students: {}'.format(students[::-1]))
print()
print('list.reverse()')
students.reverse()
print('students: {}'.format(students))
🧾출력
슬라이싱을 이용한 뒤집기
students: ['유재석', '강호동', '이용규', '박찬호', '홍길동']
list.reverse()
students: ['유재석', '강호동', '이용규', '박찬호', '홍길동']
- 해당 아이템의 인덱스를 반환한다
📝입력
students = ['홍길동', '박찬호', '이용규', '강호동', '유재석']
print(f'보기 : {students}')
findStudent = input('검색할 이름 : ')
find_idx = students.index(findStudent)
print(f'{findStudent}는 {find_idx}번 인덱스에 있습니다')
🧾출력
보기 : ['홍길동', '박찬호', '이용규', '강호동', '유재석']
검색할 이름 : 박찬호
박찬호는 1번 인덱스에 있습니다
index(data, a, b)로 범위설정
📝입력
students = ['홍길동', '박찬호', '이용규', '강호동', '유재석']
print(f'보기 : {students}')
findStudent = input('검색할 이름 : ')
find_idx = students.index(findStudent, 2, 4)
print(f'{findStudent}는 {find_idx}번 인덱스에 있습니다')
🧾출력
보기 : ['홍길동', '박찬호', '이용규', '강호동', '유재석']
검색할 이름 : 이용규
이용규는 2번 인덱스에 있습니다
- 인수에 해당하는 아이템의 갯수를 반환한다
📝입력
students = ['유재석', '박찬호', '유재석', '강호동', '유재석']
print(f'보기 : {students}')
findStudent = input('검색할 이름 : ')
countStudent = students.count(findStudent)
print(f'{findStudent}이라는 이름은 {countStudent}개 있습니다')
🧾출력
보기 : ['유재석', '박찬호', '유재석', '강호동', '유재석']
검색할 이름 : 유재석
유재석이라는 이름은 3개 있습니다
📝입력
import random
types_list = ['A', 'B', 'O', 'AB']
types = random.choices(types_list, k=10)
print(types); print(type(types))
for data in types_list:
print(f'{data}는 {types.count(data)}개 이다')
🧾출력
['B', 'O', 'AB', 'B', 'AB', 'O', 'AB', 'B', 'O', 'A']
<class 'list'>
A는 1개 이다
B는 3개 이다
O는 3개 이다
AB는 3개 이다