자료구조란?
여러 개의 데이터가 묶어있는 자료형을 컨테이너 자료형이라고 하고,
이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.
데이터를 묶어 관리하는 것.
보통 담는 변수가 여러가지라 변수명을 복수명으로 적어주면 관리에 좋음.
배열과 같이 여러 개의 데이터를 나열한 자료구조.
데이터는 , 로 구분한다
데이터 하나하나는 요소, element, item이라 한다.
리스트 안에 데이터가 섞어서도 넣을 수 있음.
strs = [3.14, '십', 20, 'one']
컨테이너 안에 또 따른 컨테이너가 들어갈 수 있음.
datas = [10,20,30, [40,50,60] ]
리스트는 출력 시
print('students : {}'.format(students))
students : ['알라딘', '자스민', '이아고', '자파']
[ ]안에 담겨서 나온다.
리스트 안에 들어가있는 데이터에 자동으로 부여되는 번호표
번호표는 0번부터 부여된다.
데이터를 담은 변수는 list라 나오지만 그 요소 하나는 성격에 맞는 걸로 나옴
글자면 str, 정수면 int ..
- 리스트의 길이 == 아이템 갯수
len()을 이용하여 리스트 변수를 담아주면 됌.
len()을 이용하여 for문 range에 담을 수 있음.
for i in range(len(mySport)):
print('mySport[{}]: {}'.format(i,mySport[i]))
n = 0
while n < len(mySport):
print('mySport[{}]: {}'.format(n,mySport[n]))
n += 1
for item in mySport:
print(item)
studentCnts = [[1,19], [2,20], [3,22], [4,18], [5,21]]
for classNo, cnt in studentCnts:
print('{}학급 학생수: {}'.format(classNo,cnt))
classNo는 1,2,3,4를 가리킴
cnt는 19,20,22,18를 가리킴
1학급 학생수 : 19
2학급 학생수 : 20
3학급 학생수 : 22
4학급 학생수 : 18
5학급 학생수 : 21
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:
print('과락 과목: {}, 점수: {}'.format(subject, score))
for subject, score in scores:
if score >= minScore: continue
print('과락 과목: {}, 점수: {}'.format(subject, score))
-----출력
과락 과목: 국어, 점수: 58
과락 과목: 국사, 점수: 50
minScore = 60
scores = [['국어',58],
['영어',77],
['수학',89],
['과학',99],
['국사',50]]
n = 0
while n < len(scores):
if scores[n][1] < minScore:
print('과락 과목: {}, 점수: {}'.format(scores[n][0],scores[n][1]))
n += 1
---
n = 0
while n < len(scores):
if scores[n][1] >= minScore:
n += 1
continue
print('과락 과목: {}, 점수: {}'.format(scores[n][0], scores[n][1]))
n += 1
---
n = 0
while True:
print(cars[n])
n += 1
if n == len(cars):
break
sports = ['탁구','배구','양궁','축구','테니스']
for idx, value in enumerate(sports):
print('{} : {}'.format(idx, value))
-----출력
0 : 탁구
1 : 배구
2 : 양궁
3 : 축구
4 : 테니스
리스트 외에 문자열에도 사용 가능
리스트명.append('아이템')
리스트에 맨 마지막에 들어가게된다!
예시코드
💻출력
사이에 들어가면 그 뒤에 아이템들은 index자리수가 하나씩 추가된다.
예시코드
💻출력
마지막 인덱스에 해당하는 아이템 삭제
기본자리는 마지막 자리
자리 지정하고싶으면 자리번호 넣으면 됌!
<기본>
<인덱스로 삭제하고싶은 곳 지정>
- 인덱스 1번인 자스민이 삭제됌!
💻출력1가지 아이템을 삭제하려면 리스트명.remove('아이템')
삭제하려는 데이터가 2개 이상이면 while문을 이용하자'아이템 ' in 리스트
리스트 안에 아이템이 있으면 True
리스트에 또 다른 리스트를 연결(확장) 할 수 있다.
vegetable = ['감자','토마토','애호박'] fruit = ['수박','딸기','바나나'] ['감자','토마토','애호박'] extend() ['수박','딸기','바나나'] vegetable.extend(fruit) vegetable = ['감자','토마토','애호박','수박','딸기','바나나']
덧셈연산자를 이용해서 리스트를 연결할 수도 있다.
A리스트 + B 리스트 = C리스트
result = students1 + students2 reslut :['알라딘', '자파', '자스민', '이아고', '자파', '아부', '자파', '버즈', '우디', '포키', '햄', '포테이토헤드']
<예시 코드>
korea = ['가','다','바','마','라','나'] print('한글: {}'.format(korea)) korea.sort() print('오름차순 정렬: {}'.format(korea)) korea.sort(reverse=True) print('내림차순 정렬: {}'.format(korea))
💻출력
students = ['버즈','우디','포키','햄','포테이토헤드']
print('정렬 : {}'.format(students))
students.reverse()
print(f'뒤집기: {students}')
💻출력
원하는 아이템 뽑아내기
리스트명 [n:m]
인덱스 n 이상 m 미만까지 추출함
리스트명 [:m]
인덱스 처음부터 m미만까지 추출
- 음수값까지 지정됌. (뒤에서부터 간다)
문자열도 슬라이싱 가능함!
str = '가나다'
슬라이싱 단계를 정할 수도 있다.
members = ['토끼','강아지','고양이','병아리','말','송아지']
print('member:{}'.format(member[1:5:2]))
인덱스 1~5는 ['강아지', '고양이', '병아리', '말'] 이지만
추출은 2씩 건너뛴 강아지, 병아리만 추출됌
numbers = [1,2,3,4,5]
print(numbers)
print('일부분: {}'.format(numbers[1:3]))
numbers[1:3] = ['two','three','four']
print(numbers)
💻출력
slice()함수
변수명[slice(시작자리,끝자리)]
파이썬 기초공부만큼이나 재밌었던 수업이였다.
실습도 하나하나 다 따라하다보니 시간이 금세가서 놀랐지만..!
재밌었던 만큼 활용도가 높은 기본기 수업이라 잘 다져놔야겠다👊👊👊