- 리스트의 나머지 기능들(1)
리스트를 곱셈 연산하면 아이템이 반복된다.
'홍길동' '박찬호' '이용규'
↓
* 2 ( 곱셈 연산 )
↓
'홍길동' '박찬호' '이용규' '홍길동' '박찬호' '이용규'
students = ['홍길동', '박찬호', '이용규']
print('students : {}'.format(students))
studentsMul = students * 3
print('studentsMul : {}'.format(studentsMul)) # 곱셈 연산만큼 늘어난다!
numbers = [2, 50, 0.12, 1, 9]
print('numbers : {}'.format(numbers))
numbersMul = numbers * 2
print('numbersMul : {}'.format(numbersMul)) # 곱셈 연산만큼 늘어난다!
index(item) 함수를 item의 인덱스를 알아낼 수 있다.
'홍길동', '박찬호', '이용규'
↓
index('홍길동')
↓
1
students = ['홍길동', '강호동', '박찬호', '이용규', '박승철', '강호동', '김지은'] # '강호동'이 두개 있는데 index()를 사용하면?
print('students : {}'.format(students))
searchIdx = students.index('강호동')
print('searchIdx : {}'.format(searchIdx)) # 중복값이 있다면 가장 앞에 있는 인덱스만 뽑아준다!
searchIdx = students.index('강호동', 2, 6) # 인덱스를 찾을 범위를 정해준다! index 2~5중 '강호동'이 어디에 있느냐!
print('searchIdx : {}'.format(searchIdx))
numbers = [2, 50, 0.12, 1, 9]
searchIdx = numbers.index(0.12)
print('searchIdx : {}'.format(searchIdx))
- 실습
1부터 10까지의 정수가 중복되지 않고 섞여 있을 때 행운의 숫자 7의 위치를 찾자!
import random
sampleList = random.sample(range(1, 11), 10) # 1에서 10까지 10개의 숫자 출력!
selectIdx = int(input('숫자 7의 위치 입력 : '))
searchIdx = sampleList.index(7) # 숫자 7이 있는 인덱스 값!
if searchIdx == selectIdx:
print('빙고!!')
else:
print('비비고!!')
print('sampleList : {}'.format(sampleList))
print('searchIdx : {}'.format(searchIdx))
- 특정 아이템의 개수 알아내기
count() 함수를 이용하면 특정 아이템의 개수를 알아낼 수 있다.
'홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은'
↓
count('홍길동') 개수파악
↓
1
students = ['홍길동', '강호동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students : {}'.format(students))
searchCnt = students.count('홍길동') # '홍길동' 아이템의 개수를 알고 싶다!
print('searchCnt : {}'.format(searchCnt))
searchCnt = students.count('강호동') # '강호동' 아이템의 개수를 알고 싶다!
print('searchCnt : {}'.format(searchCnt))
searchCnt = students.count('김아무개') # 없는 아이템은 0으로 출력!
print('searchCnt : {}'.format(searchCnt))
del 키워드를 이용하면 특정 아이템을 삭제할 수 있다.
'홍길동', '강호동', '박찬호', '이용규', '강호동', '박승철', '김지은'
↓
del students[1] # 1의 아이템을 삭제해라!
↓
'홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은'
students = ['홍길동', '강호동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students : {}'.format(students))
del students[1] # 인덱스 1의 아이템을 삭제해라!
print('students : {}'.format(students))
del students[1:4] # 슬라이싱을 통해 범위를 지정해서 지울 수 있다!
print('students : {}'.format(students))
del students[2:] # 2번째 부터 끝까지 모두 삭제!
print('students : {}'.format(students))
- 실습
하루 동안 헌혈을 진행한 후 혈액형 별 개수를 파악하는 프로그램을 만들어보자.
import random
types = ['A', 'B', 'AB', 'O']
todayData = [] # 하루 헌혈 수 카운트
typeCnt = [] # 혈액형 별 카운트
for i in range(100): # 100개를 기준으로 한다!
type = types[random.randrange(len(types))] # 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))) # 이 부분 다시 이해해 보기
- 튜플
리스트와 비슷하지만 아이템 변경 불가!
리스트 → ['강호동', '박찬호', '이용규', '박승철', '강호동', '김지은']
아이템 변경(수정, 삭제 등) 가능
튜플 → ('강호동', '박찬호', '이용규', '박승철', '강호동', '김지은')
아이템 변경(수정, 삭제 등 ) ★불가능★
- '()'를 이용해서 선언하고, 데이터 구분은 ','를 이용한다.
students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
numbers = (10, 20, 30, 40, 50, 60, 70)
strs = (3.14, '십', 20, 'one', '3.141592')
숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있다.
datas = (10, 20, 30, (40, 50, 60))
튜플에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.
students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
print('students : {}'.format(students))
print('students type : {}'.format(type(students)))
numbers = (10, 20, 30, 40, 50, 60, 70)
print('numbers : {}'.format(numbers))
print('numbers type : {}'.format(type(numbers)))
실습
가족 이름을 튜플에 저장하고 출력해보자.
myFamilyNames = ('홍아빠', '홍엄마', '홍길동', '홍동생')
print(myFamilyNames)
todaySchedule = ('10시-업무회의',
'12시-친구와점심약속',
'3시-자료정리',
'6시-운동',
'9시-TV시청')
print(todaySchedule)
myFamilyNames = ('홍아빠', '홍엄마', '홍길동', '홍동생')
print(myFamilyNames)
myFamilyNames[2] = '홍홍홍' # 튜플은 수정할 수 없으므로 오류가 난다!
todaySchedule = ('10시-업무회의',
'12시-친구와점심약속',
'3시-자료정리',
'6시-운동',
'9시-TV시청')
print(todaySchedule)
- 튜플 아이템 조회
튜플의 아이템을 조회하자!
튜플도 리스트와 마찬가지로 아이템에 자동으로 부여되는 번호표가 있다.
('홍길동', '박찬호', '이용규', '박승철', '김지은')
0 1 2 3 4
튜플 아이템은 인덱스를 이용해서 조회 가능하다.
students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
print('students[0] : {}'.format(students[0]))
print('students[1] : {}'.format(students[1]))
print('students[2] : {}'.format(students[2]))
print('students[3] : {}'.format(students[3]))
print('students[4] : {}'.format(students[4]))
print('students[5] : {}'.format(students[5])) # 존재하지 않는 인덱스를 조회하면 에러가 발생한다!
numbers = (10, 20, 30, 40, 50)
print('numbers[0] : {}'.format(numbers[0]))
print('numbers[1] : {}'.format(numbers[1]))
print('numbers[2] : {}'.format(numbers[2]))
print('numbers[3] : {}'.format(numbers[3]))
print('numbers[4] : {}'.format(numbers[4]))
- 실습
5명의 학생 이름을 튜플에 저장하고 인덱스가 홀수인 학생과 짝수(0포함)인
학생을 구분해서 인덱스와 학생 이름을 출력해보자.
students = ('김성예', '신경도', '박기준', '최승철', '황동석')
# print('--인덱스가 짝수인 학생--')
# print('students[0] : {}'.format(students[0]))
# print('students[2] : {}'.format(students[2]))
# print('students[4] : {}'.format(students[4]))
#
# print('--인덱스가 홀수인 학생--')
# print('students[1] : {}'.format(students[1]))
# print('students[3] : {}'.format(students[3]))
# for문으로 만들어 보기!
for i in range(len(students)):
if i % 2 == 0:
print('인덱스 짝수 : students[{}] : {}'.format(i, students[i]))
else:
print('인덱스 홀수 : students[{}] : {}'.format(i, students[i]))
- in과 not in 키워드
- 아이템 존재 유/무 판단하기!
in, not in 키워드를 이용하면 아이템의 존재 유/무를 알 수 있다.
studentsTuple = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
searchName = input('학생 이름 입력 : ')
if searchName in studentsTuple:
print('{} 학생은 우리반 학생입니다.'.format(searchName))
else:
print('{} 학생은 우리반 학생이 아닙니다.'.format(searchName))
studentsTuple = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
searchName = input('학생 이름 입력 : ')
if searchName in studentsTuple:
print('{} 학생은 우리반 학생 입니다.'.format(searchName))
else:
print('{} 학생은 우리반 학생이 아닙니다.'.format(searchName))
not in 으로 한다면
if searchName not in studentsTuple:
print('{} 학생은 우리반 학생이 아닙니다.'.format(searchName))
else:
print('{} 학생은 우리반 학생 입니다.'.format(searchName))
- in, not in 키워드는 문자열에서도 사용 가능하다.
pythonStr = '파이썬[3](영어: Python)은 1991년[4] 네덜란드계 소프트웨어 엔지니어인 귀도 반 로섬이 발표한 고급 프로그래밍 언어로,' \
' 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다.'
print('{} : {}'.format('Python', 'Python' in pythonStr)) # True
print('{} : {}'.format('Python', 'python' in pythonStr)) # False
print('{} : {}'.format('파이썬', '파이썬' in pythonStr)) # True
print('{} : {}'.format('파이선', '파이선' in pythonStr)) # False
print('{} : {}'.format('귀도', '귀도' in pythonStr)) # True
print('{} : {}'.format('객체지향적', '객체지향적' in pythonStr)) # True
- 실습1
컴퓨터가 1부터 10까지 5개의 난수를 생성한 후, 사용자가 입력한 숫자가 있는지 또는 없는지를 출력하는 프로그램을 만들어보자.
import random
randomNumbers = random.sample(range(1, 11), 5) # sample로 하는 것 확인
userNumber = int(input('숫자 입력(확률 50%): '))
if userNumber in randomNumbers:
print('빙고!!')
else:
print('다시 도전!!')
print('randomNumbers : {}'.format(randomNumbers))
print('userNumber : {}'.format(userNumber))
- 실습2
문장에서 비속어가 있는지 알아내는 프로그램을 만들어보자.
wrongWord = ['쩔었다', '짭새', '꼽사리', '먹튀', '지린', '쪼개다', '뒷담 까다']
sentence = '짭새 등장에 강도들은 모두 쩔었다. 그리고 강도 들은 지린 듯 도망갔다.'
for word in wrongWord: # 7번 반복!
if word in sentence:
print('비속어 : {}'.format(word))
이 글은 제로베이스 데이터 취업 스쿨의 강의자료 일부를 발췌하여 작성되었습니다.