1) 컨테이너 자료형(여러개의 데이터가 묶여 있는 자료형)의 데이터 구조
리스트, 튜플, 딕셔너리, 세트
students (레퍼런스 변수) = []
for student in students :
print(student)
1) [ ]로 선언
2) 데이터(아이템, 요소)은 ,로 구분
3) 숫자, 문자(열), 논리형 등 모든 기본 데이터 같이 저장 가능
4) 리스트에 또 다른 컨테이너 자료형 데이터 저장 가능
1) 각각 데이터를 원할 때 (리스트 아이템)
2) 개별의 type은 숫자면 int나 float 등 본연의 type으로 출력
1) 리스트 길이 = 리스트에 저장된 아이템 개수
2) len()과 반복문을 이용하면 리스트 아이템 조회가 가능
#리스트 길이가 엄청 길수도 있음
students = ['a','b','c', 'd', 'e']
len(students)
for i in range(len(students)) #range 까먹지 말기 :
print(i, students[i])
#while문으로
n = 0
sLength = len(students)
while n < sLength :
print(n, students[n])
n+=1
#len 함수 str에도 가능!
str = 'Hello python'
len(str) = 14
for문 이용시 리스트 아이템 자동으로 참조 가능
1) in 뒤 : 숫자 범위 또는 iterable 객체
2) 리스트 내부에 또 다른 리스트의 아이템을 조회할 수 있음
ex) 변수 두개 지정시 알아서 할당
students = [[1, 19], [2, 20], [3, 22]]
#1.
for i in range(len(students)) :
print(students[i][0], students[i][1])
#2. ★★★
for classNo, cnt in students:
print(classNo, cnt)
students = [[1, 18], [2, 19], [3, 23], [4, 21], [5, 20]]
for classNo, cnt in students:
print(cnt)
for item in students:
print(item[1])
결과 : 18 / 19 / 23 / 21 / 20 (리스트 식으로 x 그냥 하나씩 나옴)
#★★ 변수만들어서 변수값 새로 지정해주기
students = [[1, 18], [2, 19], [3, 23], [4, 21], [5, 20]]
minclassNo = 0; maxclassNo = 0
minCnt = 0; maxCnt = 0
for classNo, cnt in students:
if minCnt = 0 or minCnt > cnt :
minclassNo = classNo
minCnt = cnt
if maxCnt < cnt :
maxclassNo = classNo
maxCnt = cnt
print('학생 수가 가장 적은 학급(학생수): {}학급({}명)'.format(minclassNo, minCnt))
print('학생 수가 가장 많은 학급(학생수): {}학급({}명)'.format(maxclassNo, maxCnt))
1) 인덱스와 아이템 조회를 한꺼번에
2) 문자열에도 적용 가능
1) 변수.append('추가내용')
2) 추가내용에 [1, 2]같은 또다른 리스트도 가능
1) 변수.insert(위치, '추가내용')
#쌤
numbers = [1, 3, 6, 11, 45, 54, 62, 74, 85]
inputNumber = int(input('숫자 입력: '))
insertId = 0
for idx, number in enumerate(numbers):
if insertId = 0 and number > inputNumber :
#insertId = 0은 더이상의 반복 막는법
insertId = idx #그 number의 자리에 들어가기
numbers.insert(idx-1, inputNumber)
print(numbers)
#내가 한것
numbers = [1, 3, 6, 11, 45, 54, 62, 74, 85]
inputNumber = int(input('숫자 입력: '))
for idx, number in enumerate(numbers):
if number > inputNumber :
numbers.insert(idx-1, inputNumber) #틀림 idx에 들어가야
print(numbers)
break
1) 마지막 삭제 : 변수.pop()
2) 특정부분 삭제 : 변수.pop(위치)
1~2를 변수로 받아서 print하면 삭제한 내용 알수 있음
playerScore = [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
print('playerScore : {}'.format(playerScore))
minScore = 0; maxScore = 0
minScoreIdx = 0; maxScoreIdx = 0 #idx 초기값 설정
for idx, score in enumerate(playerScore):
if idx == 0 or minScore > score: #idx=0있어야 하나는 불러올수 있음
minScoreIdx = idx
minScore = score
print('minScore:{}, minScoreIdx : {}'.format(minScore, minScoreIdx))
playerScore.pop(minScoreIdx)
print('playerScore : {}'.format(playerScore))
for idx, score in enumerate(playerScore):
if maxScore < score:
maxScoreIdx = idx
maxScore = score
print('maxScore:{}, maxScoreIdx : {}'.format(maxScore, maxScoreIdx))
playerScore.pop(maxScoreIdx)
print('playerScore : {}'.format(playerScore))
1) 변수.remove('삭제 내용')
2) remove는 한개 아이템만 삭제 가능. 2개이상이라면 while문 이용
#while 조건식:
while '강호동' in students :
students.remove('강호동')
print(students)
3) (19강) del 리스트[번호] : 역시 하나씩 삭제
del students[1] / del students[1:4]
del students[2:]
1) 변수1.extend(변수2) : 1에 2가 추가됨
2) + : 새로운 리스트 생성(새로 변수지정해주기)
result = []
for number in addList :
if number not in result:
result.append(number)
print(result)
1) 오름 = 변수.sort()
2) 내림 = 변수.sort(reverse = True)
-숫자에서 오름차순 : 작은~큰순
1) 변수.reverse()
1) [2:4] = 2~3
2) ★ 음수 슬라이싱
numbers = [2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14]
print('numbers: {}'.format(numbers[2:-2])) #0.12 ~ 35
print('numbers: {}'.format(numbers[-5:-2])) #7 ~ 35
3)문자도 슬라이싱 가능
str = 'abcdefghijklmnopqrstuvwxyz'
print('str length: {}'.format(len(str)))
print('str: {}'.format(str))
print('str: {}'.format(str[2:4]))
#결과값은 str

1) 아이템의 개수가 늘어나는 것
1) 변수.index(item) : item의 인덱스
students = ['홍길동', '강호동', '박찬호', '이용규', '박승철', '강호동', '김지은']
print('students: {}'.format(students))
searchIdx = students.index('강호동' , 2, 6) : 2~6까지
print(searchIdx)
1) 변수.count('강호동') : 강호동의 개수
#random.randrange
import random
types = ['A', 'B', 'AB', 'O']
todayData = []
typeCnt = []
for i in range(100):
type = types[random.randrange(len(types))] #0, 1, 2, 3, 중 하나
todayData.append(type)
print('todayData : {}'.format(todayData))
print('todayData length : {}'.format(len(todayData)))
for type in types :
print('{}형 : {}개'.format(type, todayData.count(type)))