: 여러 개의 데이터가 묶여있는 자료형을 컨데이너 자료형이라고 하고,
이러한 컨데이너 자료형의 데이터 구조를 "자료구조"
: 배열과 같이 여러 개의 데이터를 나열한 자료구조
: index? 아이템은 인덱스를 이용해서 조회 가능함
인덱스는 0부터 시작
ex) 5명의 학생 이름을 리스트에 저장하고 인덱스가 홀수인 학생과 짝수(0)포함인 학생을 구분해서 인덱스와 학생 이름을 출력해보자
students = ['kim', 'lee', 'park', 'yoon', 'hong']
for i in range(len(students)):
if i % 2 ==0: #짝수
print('짝수: ', i, students[i])
else:
print('홀수: ', i, students[i])
: len()함수 사용
myFavoriteSports = ['swim', 'basketball', 'baseball', 'running']
n = 0
while n < len(myFavoriteSports):
print('myFavoriteSports[{}]: {}'.format(n, myFavoriteSports[n]))
n +=1
for item in myFavoriteSports:
print(item)
#1
for i in range(len(cars)):
print(cars[i])
#2
for car in cars:
print(car)
#3
studentCnts = [[1,19], [2,20], [3,22], [4,18], [5,21]]
for classNo, cnt in studentCnts:
print('{}학급 학생 수: {}'.format(classNo, cnt))
print(classNo+cnt)
<<<
1학급 학생 수: 19
20
2학급 학생 수: 20
22
3학급 학생 수: 22
25
4학급 학생 수: 18
22
5학급 학생 수: 21
26
studentCnts = [[1,18], [2,19], [3,23], [4,21], [5,20], [6,22], [7,17]]
classNo = 0
sum = 0
for classNo, cnt in studentCnts:
print('{}학급 학생수 {}'.format(classNo, cnt))
sum += cnt
classNo = classNo
print('평균 학생 수 : ', sum/classNo)
: while문을 이용하면 다양한 방법으로 아이템 조회가 가능하다
cars = ['그랜져', '소나타', '말리부', '카니발', '쏘렌토']
#1
n = 0
while n < len(cars):
print(cars[n])
n+=1
#2
n = 0
flag = True
while flag:
print(cars[n])
n += 1
if n == len(cars):
flag = False
#3
n = 0
while True:
print(cars[n])
n += 1
if n == len(cars):
break
#example
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
: index와 item을 동시에 조회하기
for idx, value in enumerate(list)
#사용자가 입력한 문자열에서 공백의 개수를 출력해보자
message = input('put in the message : ')
cnt = 0
for idx, value in enumerate(message):
if value == ' ':
cnt += 1
: append() 함수 사용하면 마지막 인덱스에 아이템 추가됨
myFamilyAge = [['father', 66], ['mother', 62], ['me', 34]]
myFamilyAge.append(['brother', 33])
: insert()함수를 사용해 특정 위치(인덱스)에 아이템을 추가할 수 있음
students = ['kang', 'park', 'hong', 'lee', 'kim']
students.insert(2, 'yoon') #index2번째에 삽입
students
<<< ['kang', 'park', 'yoon', 'hong', 'lee', 'kim']
numbers = [1, 3, 6, 11, 45, 54, 62, 74, 85]
inputNumber = 55
insertIdx = 0
for idx, v in enumerate(numbers):
if insertIdx == 0 and inputNumber < v:
insertIdx = idx
numbers.insert(insertIdx, inputNumber)
print(numbers)
: pop() 함수를 이용하면 마지막 인덱스에 해당하는 아이템을 삭제할 수 있음
: remove() 함수를 이용하면 특정 아이템을 삭제
studnets.remove('park')
students = ['hong', 'park', 'yoon', 'kim', 'kang', 'park']
students.remove('park') 은 한개만 삭제됨, park 두 개 다 삭제하고 싶으면
while 'park' in studnets:
studnets.remove('park')
group1 = ['hong', 'kim', 'lee']
group2 = ['kang', 'park', 'yoon']
group1.extend(group2)
group1
<<<
['hong', 'kim', 'lee', 'kang', 'park', 'yoon']
group1 = ['hong', 'kim', 'lee']
group2 = ['kang', 'park', 'yoon']
result = group1 + group2 # 새로운 리스트 생성
<<< ['hong', 'kim', 'lee', 'kang', 'park', 'yoon']
: sort()함수를 이용하면 아이템을 정렬할 수 있다.
playerScore.sort() #playerScore 자체가 바뀜
result = sorted(playerScore) #새로운 변수에 들어감
: reverse() 반대로 나열됨
students.reverse()
students = ['kang', 'park', 'hong', 'lee', 'kim']
searchIdx = students.index('park')
searchIdx
searchIdx = students.index('park', 2, 6) 범위설정해서 위치찾기
students = ['kang', 'park', 'hong', 'lee', 'kim', 'kang']
searchNum = students.count('kang')
searchNum
del students[1]
del students[1:4] #슬라이싱
: 리스트와 비슷하지만 아이템 변경(수정, 삭제 등) 불가
studnets = ('park', 'kim', 'lee', 'hong')
numbers = (10, 20, 30, 40, 50, 70)
strs = (3.14, '십', '20, 'one', '3.141592')
datas = (10,20,30(40,50,60))
: 리스트와 마찬가지로 아이템에 자동으로 부여되는 번호표가 있다 => 인덱스
: 아이템의 존재 유/뮤를 알 수 있음 => True/False
if searchName in studentsTuple:
print("학생은 우리반 학생입니다")
else:
print("학생은 우리반 학생이 아닙니다")
: len()으로 튜플에 저장된 아이템 개수를 튜플 길이라고 한다
: 두 개의 튜플을 합쳐서 새로운 튜플을 만들자
extend()는 안됨, 단지 + 가능함 왜? 새로운 튜플을 만드는거니깐
result = group1 + group2
myNumbers = (1,3,5,6,7)
friendNumbers = (2,3,5,8,10)
for num in friendNumbers :
if number not in myNumbers:
myNumbers = myNumbers + (number, ) # (number, ) 이렇게 하면 순간 튜플로 바뀌고 튜플+튜플 계산이 가능해짐
: 리스트와 비슷