[Python 기초] 04-1 자료구조
*using Python - PyCharm Community Edition
📌 자료구조란?
- 컨테이너 자료형: 여러개의 데이터가 묶여있는 자료형
- 자료구조: 컨테이너 자료형의 데이터 구조
대표적인 자료구조는 리스트(list), 튜플(tuple), 딕셔너리(dict), 세트(set) 가 있다.
📌 list
- 배열과 같이 여러 개의 데이터를 나열한 자료구조
- [] 를 이용해 선언하고 , 를 이용해 데이터 구분
- 숫자, 문자(열), 논리형 등 모든 데이터 같이 저장 가능
- 리스트에 또 다른 컨테이너 자료형 데이터 저장 가능
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print('students: {}'.format(students))
# students: ['홍길동', '박찬호', '이용규', '박승철', '김지은']
numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90]
print('numbers: {}'.format(numbers))
# numbers: [10, 20, 30, 40, 50, 60, 70, 80, 90]
인덱스 - 아이템에 자동으로 부여되는 번호표
- 리스트 아이템은 인덱스를 이용해서 조회 가능
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print(students[0]) # 홍길동
print(students[1]) # 박찬호
print(students[2]) # 이용규
print(students[3]) # 박승철
print(students[4]) # 김지은
numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90]
print(numbers[0]) # 10
print(numbers[1]) # 20
print(numbers[5]) # 60
print(numbers[7]) # 80
print(numbers[8]) # 90
길이 - 리스트에 저장된 아이템 개수
- len()
- 반복문과 함께 리스트의 아이템 조회 가능
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
sLen = len(students)
for i in range(sLen):
print(students[i])
# len() 은 문자열 길이 확인도 가능
str = "Hello Python!"
print(len(str)) # 13
📚 list와 반복문
for문
- for문을 이용해 리스트의 아이템 자동 참조
- list와 주로 사용되는 반복문
cars = ['그랜저', '소나타', '말리부', '카니발', '쏘렌토']
for i in range(len(cars)):
print(cars[i])
for car in cars:
print(car)
studentCnts = [[1,19],[2,20],[3,22],[4,18],[5,21]]
for i in range(len(studentCnts)):
print('{}학습 학생수: {}'.format(studentCnts[i][0], studentCnts[i][1]))
for classNo, cnt in studentCnts:
print('{}학습 학생수: {}'.format(classNo, cnt))
# 조건문과 함께 사용
minScore = 60
scores = [['국어', 58], ['영어',77],['수학',89],['과학', 99], ['국사', 50]]
for item in scores:
if item[1] < minScore:
print('과락 과목: {}, 점수: {}'.format(item[0], item[1]))
for subject, score in scores:
if score < minScore: continue
print('과락 과목: {}, 점수: {}'.format(subject, score))
while문
- while문을 이용해 다양한 방법으로 아이템 조회
cars = ['그랜저', '소나타', '말리부', '카니발', '쏘렌토']
n = 0
flag = True
while True:
print(cars[n])
n += 1
if n == len(cars):
flag = False
break
minScore = 60
scores = [['국어', 58], ['영어',77],['수학',89],['과학', 99], ['국사', 50]]
n = 0
while n < len(scores):
if scores[n][1] < minScore:
n += 1
continue
print('과락 과목: {}, 점수: {}'.format(scores[n][0], scores[n][1]))
n += 1
📚 enumerate()
- 인덱스와 아이템 한 번에 조회
- enumerate() 이용 아이템 열거 가능
sports = ['농구', '수구', '축구', '마라톤', '테니스']
for idx, value in enumerate(sports):
print('{}: {}'.format(idx, value))
# 문자열에도 적용 가능
str = 'hello python!'
for idx, value in enumerate(str):
print('{}: {}'.format(idx, value))
📚 list에 추가하기
append() - 마지막 인덱스에 아이템 추가
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print('students length: {}'.format(len(students))) # 5
print('last index: {}'.format(len(students) - 1)) # 4
students.append('유태오')
print('students: {}'.format(students))
# ['홍길동', '박찬호', '이용규', '박승철', '김지은', '유태오']
print('students length: {}'.format(len(students))) # 6
print('last index: {}'.format(len(students) - 1)) # 5
scores = [['국어', 88], ['영어', 91]]
print('scores length: {}'.format(len(scores))) # 2
print('last index: {}'.format(len(scores) - 1)) # 1
scores.append(['수학', 96])
print('scores: {}'.format(scores))
# [['국어', 88], ['영어', 91], ['수학', 96]]
print('scores length: {}'.format(len(scores))) # 3
print('last index: {}'.format(len(scores) - 1)) # 2
insert() - 특정 위치(인덱스)에 아이템 추가
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
students.insert(3, '유태오')
print('students: {}'.format(students))
# ['홍길동', '박찬호', '이용규', '유태오', '박승철', '김지은']
# 오름차순으로 된 숫자의 정렬 유지하며 사용자가 입력한 정수 추가
nums = [1, 3, 6, 11, 45, 54, 62, 74, 85]
inputNum = int(input('숫자 입력: '))
insertIdx = 0
for idx,number in enumerate(nums):
if insertIdx == 0 and inputNum < number:
insertIdx = idx
nums.insert(insertIdx, inputNum)
print('nums: {}'.format(nums))
# 20을 입력하면
# nums: [1, 3, 6, 11, 20, 45, 54, 62, 74, 85]
📚 list에서 삭제하기
pop() - 마지막 인덱스에 해당하는 아이템 삭제
pop(n) - n 인덱스에 해당하는 아이템 삭제
students = ['홍길동', '박찬호', '유태오', '이용규', '박승철', '김지은']
students.pop()
print('students: {}'.format(students))
# ['홍길동', '박찬호', '유태오', '이용규', '박승철']
remov = students.pop(3)
print('removed: {}'.format(remov))
# 이용규
print('students: {}'.format(students))
# ['홍길동', '박찬호', '유태오', '박승철']
remove() - 특정 아이템 삭제
- 한 개의 아이템만 삭제 가능
- 2개 이상이면 while문 이용
students = ['홍길동', '유태오', '이종원', '송강', '권혁우', '이주연', '홍길동']
students.remove('홍길동')
print(students)
# ['유태오', '이종원', '송강', '권혁우', '이주연', '홍길동']
while '홍길동' in students:
students.remove('홍길동')
print(students)
# ['유태오', '이종원', '송강', '권혁우', '이주연']
📚 list 연결
extend() - 또 다른 리스트를 연결(확장)
덧셈기호 - '+' 기호로 연결
group1 = ['유태오', '이종원', '송강']
group2 = ['권혁우', '이주연', '홍길동']
group1.extend(group2)
print(group1) # ['유태오', '이종원', '송강', '권혁우', '이주연', '홍길동']
print(group2) # ['권혁우', '이주연', '홍길동']
result = group1 + group2
print(group1) # ['유태오', '이종원', '송강']
print(group2) # ['권혁우', '이주연', '홍길동']
print(result) # ['유태오', '이종원', '송강', '권혁우', '이주연', '홍길동']
📚 list 정렬
sort() - 아이템 정렬
students = ['홍길동', '유태오', '이종원', '송강', '권혁우', '이주연']
students.sort()
# ['권혁우', '송강', '유태오', '이종원', '이주연', '홍길동']
students.sort(reverse=True)
# ['홍길동', '이주연', '이종원', '유태오', '송강', '권혁우']
num = [4, 52, 33, 81, 2.8, 1.7, 90, 2]
num.sort()
# [1.7, 2, 2.8, 4, 33, 52, 81, 90]
num.sort(reverse=True)
# [90, 81, 52, 33, 4, 2.8, 2, 1.7]
📚 reverse()
- 아이템 순서 뒤집기
students= ['홍길동', '유태오', '이종원', '송강', '권혁우', '이주연']
students.reverse()
# ['이주연', '권혁우', '송강', '이종원', '유태오', '홍길동']
num = [2, 4, 6, 8, 3, 5]
num.reverse()
# [5, 3, 8, 6, 4, 2]
📚 list 슬라이싱
[n:m] - list의 n부터 m 인덱스 아이템 추출
students= ['홍길동', '유태오', '이종원', '송강', '권혁우', '이주연']
print(students[1:3]) # ['유태오', '이종원']
print(students[:3]) # ['홍길동', '유태오', '이종원']
print(students[1:]) # ['유태오', '이종원', '송강', '권혁우', '이주연']
print(students[1:-3]) # ['유태오', '이종원']
num = [2, 4, 6, 8, 3, 5, 0.02, 2.5, 7.34]
print(num[::2]) # [2, 6, 3, 0.02, 7.34]
slice() - 아이템 슬라이싱
students= ['홍길동', '유태오', '이종원', '송강', '권혁우', '이주연']
print(students[slice(4)]) # ['홍길동', '유태오', '이종원', '송강']
print(students[slice(1, 4)]) # ['유태오', '이종원', '송강']
📚 list의 나머지 기능
- list *n: n번 반복해 나타냄
- list.index('아이템'): 아이템 인덱스 확인
- list.count('아이템'): 아이템 중복 개수 확인
- del list[n]: n 아이템 삭제
students = ['유태오', '이종원', '송강', '유태오']
print(students * 2) # ['유태오', '이종원', '송강', '유태오', '유태오', '이종원', '송강', '유태오']
print(students.index('유태오')) # 0
print(students.count('유태오')) # 2
del students[3]
print(students) # ['유태오', '이종원', '송강']
num = [2, 33, 52, 17]
print(num * 2) # [2, 33, 52, 17, 2, 33, 52, 17]
print(num.index(52)) # 2
print(num.count(33)) # 1
del num[2]
print(num) # [2, 33, 17]
Author And Source
이 문제에 관하여([Python 기초] 04-1 자료구조), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hhhong/Python-기초-04-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)