[2023.11.20] 자료구조 5_리스트 나머지 기능들, 튜플, 튜플 아이템 조회(index), in/not in

하은·2023년 11월 20일
0

018. 리스트 나머지 기능들(1)

리스트도 곱셈 연산이 가능하다!
특정 아이템의 인덱스를 찾자!

- 리스트 곱셈 연산

- 리스트를 곱셈 연산하면 아이템이 반복된다

= 리스트를 몇개 더 늘리는가

students = ['홍길동', '박찬호', '이용규']
print('students: {}'.format(students))

studentsMul = students * 2
print('students: {}'.format(studentsMul))

numbers = [2, 50, 0.12, 1, 9]
print('numbers: {}'.format(numbers))

numbersMul = numbers * 2
print('numbersMul: {}'.format(numbersMul))

-->
students: ['홍길동', '박찬호', '이용규']
students: ['홍길동', '박찬호', '이용규', '홍길동', '박찬호', '이용규']
numbers: [2, 50, 0.12, 1, 9]
numbersMul: [2, 50, 0.12, 1, 9, 2, 50, 0.12, 1, 9]

- 아이템 위치 찾기

- index(item)함수를 이용하면 item의 인덱스를 알아낼 수 있다

studentsJjin = ['홍길동', '강호동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('studentsJjin: {}'.format(studentsJjin))

searchIdx = studentsJjin.index('강호동')
print('searchIdx: {}'.format(searchIdx))
--> searchIdx: 1

searchIdx = studentsJjin.index('강호동', 2, 6) #[2에서 6사이] 범위지정
print('searchIdx: {}'.format(searchIdx))
--> searchIdx: 4

searchIdx = numbers.index(0.12)
print('searchIdx: {}'.format(searchIdx))
--> searchIdx: 2

실습) 1부터 10까지의 정수가 중복되지않고 섞여있을 때 행운의 숫자 7의 위치를 찾아보자

import random

sampleList = random.sample(range(1, 11), 10) #(범위), 개수

selectIdx = int(input('숫자 7의 위치 입력: '))
searchIdx = sampleList.index(7) #현재위치

if selectIdx == searchIdx:
    print('빙고!')
else:
    print('ㅠㅠ')

print('sampleList: {}'.format(sampleList))
print('searchIdx: {}'.format(searchIdx))

-->
숫자 7의 위치 입력: 2
ㅠㅠ
sampleList: [6, 9, 8, 4, 1, 10, 5, 7, 3, 2]
searchIdx: 7

019. 리스트 나머지 기능들(2)

특정 아이템의 개수를 알아내자!
필요없는 아이템은 삭제하자!

- 특정 아이템의 개수 알아내기

students = ['홍길동', '강호동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students: {}'.format(students))

searchCnt = students.count('강호동')
print('searchCnt: {}'.format(searchCnt))

searchCnt = students.count('나')
print('searchCnt: {}'.format(searchCnt))

-->
searchCnt: 2
searchCnt: 0

- count()함수를 이용하면 특정 아이템의 개수를 알아낼 수 있다

del students[1]
print('students: {}'.format(students))

del students[1:4]
print('students: {}'.format(students))

-->
students: ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
students: ['홍길동', '박승철', '김지은']

실습) 하루동안 헌혈을 진행한 후 혈액형 별 개수를 파악하는 프로그램을 만들어보자

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('{}형 \t: {}개'.format(type, todayData.count(type)))

-->
todayData: ['AB', 'O', ..., 'B', 'O']
todayData length: 100
A형 	: 24개
B형 	: 30개
AB형 	: 25개
O형 	: 21개

020. 튜플(Tuple)

- 튜플(Tuple): ()이란?

- 리스트[ ]와 비슷하지만 아이템 변경이 불가하다

students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
print('students: {}'.format(students))
print('students type: {}'.format(type(students)))

studentsList = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print('studentsList: {}'.format(studentsList))
print('studentsList type: {}'.format(type(studentsList)))

-->
students: ('홍길동', '박찬호', '이용규', '박승철', '김지은')
students type: <class 'tuple'>

studentsList: ['홍길동', '박찬호', '이용규', '박승철', '김지은']
studentsList type: <class 'list'>

- 튜플 선언

- '( )'를 이용해서 선언하고, 데이터 구분은 ','를 이용한다

students = ('홍길동', '강호동', '박찬호')
'박찬호' = 아이템(요소)

  • 숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있다.
  • 튜플에 또 다른 컨테이너 자료형 데이터를 저장할수도 있다
    data = (10, 20, 30, (40, 50, 60))
students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
print('students: {}'.format(students))
print('students type: {}'.format(type(students)))

numbers = (10, 20, 30, 40, 50)
print('numbers: {}'.format(numbers))
print('numbers type: {}'.format(type(numbers)))

-->
students: ('홍길동', '박찬호', '이용규', '박승철', '김지은')
students type: <class 'tuple'>

numbers: (10, 20, 30, 40, 50)
numbers type: <class 'tuple'>

실습) 가족이름을 튜플에 저장하고 출력해보자

myFamilyNames = ('기아빠', '기엄마', '갼', '기동생')
print('myFamilyNames: {}'.format(myFamilyNames))

-->
myFamilyNames: ('기아빠', '기엄마', '갼', '기동생')

실습) 오늘 일정을 튜플에 저장하고 출력해보자

todaySchedules = ('10시: 업무회의',
                  '12시: 친구람 점약',
                  '3시: 자료정리',
                  '6시: 운동',
                  '9시: tv')
print('todaySchedules: {}'.format(todaySchedules))

-->
todaySchedules: ('10시: 업무회의', '12시: 친구람 점약', '3시: 자료정리', '6시: 운동', '9시: tv')

021. 튜플 아이템 조회

- 인덱스

- 튜플도 리스트와 마찬가지로 아이템에 자동으로 부여되는 번호표가 있다.

- 아이템 조회

- 튜플 아이템은 인덱스를 이용해서 조회 가능하다

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]))

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]))

-->
students[0]: 홍길동
students[1]: 박찬호
students[2]: 이용규
students[3]: 박승철
students[4]: 김지은

numbers[0]: 10
numbers[1]: 20
numbers[2]: 30
numbers[3]: 40
numbers[4]: 50

실습) 5명의 학생 이름을 튜플에 저장하고 인덱스가 홀수인 학생과 짝수(0포함)인 학생을 구분해서 인덱스와 학생 이름을 출력해보자

+ 위 출력방법을 for문으로 변경해보자

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 i in range(len(students)):
    if i % 2 == 0:
        print('인덱스 짝수: students[{}], {}'.format(i, students[i]))
    else:
        print('인덱스 홀수: students[{}], {}'.format(i, students[i]))

-->
-- 인덱스가 짝수인 학생 --
students[0]: 김성예 
students[2]: 박기준 
students[4]: 황동석 

-- 인덱스가 홀수인 학생 --
students[1]: 신경도 
students[3]: 최승철 

인덱스 짝수: students[0], 김성예
인덱스 홀수: students[1], 신경도
인덱스 짝수: students[2], 박기준
인덱스 홀수: students[3], 최승철
인덱스 짝수: students[4], 황동석

022. in과 not in 키워드

- in, not in 키워드

- in, not in 키워드를 이용하면 아이템의 존재 유/무를 알 수 있다

  • in: 있으면 T, 없으면 F
  • not in: 없으면 T, 있으면 F
studentsTuple = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
print('studentsTuple: {}'.format(studentsTuple))

searchName = input('학생 이름 입력: ')

if searchName in studentsTuple:
    print('{} 학생은 우리반 학생 입니다'.format(searchName))
else:
    print('{} 학생은 우리반 학생이 아닙니다'.format(searchName))

'''
if searchName not in studentsTuple:
    print('{}은 우리반 학생이 아닙니다'.format(searchName))
else:
    print('{}은 우리반 학생 입니다'.format(searchName))
'''

-->
studentsTuple: ('홍길동', '박찬호', '이용규', '박승철', '김지은')
학생 이름 입력: 박찬호
박찬호 학생은 우리반 학생 입니다

- 아이템 조회

- in, not in 키워드는 문자열에서도 사용 가능하다

pythonStr = "파이썬(영어: Python)은 1991년 네덜란드계 소프트웨어 엔지니어인\
귀도 반 로섬이 발표한 고급 프로그래밍 언어로, '인터프리터를 사용하는 객체지향 언어'이자\
플랫폼에 독립적인, 동적 타이핑(dynamically typed) 대화형 언어이다."

print('{} : {}'.format('파이썬', '파이썬' in pythonStr))
print('{} : {}'.format('파이선', '파이선' in pythonStr))

-->
파이썬 : True
파이선 : False

실습) 컴퓨터가 1부터 10까지 5개의 난수를 생성한 후, 사용자가 입력한 숫자가 있는지 또는 없는지를 출력하는 프로그램을 만들어보자

import random
randomNumbers = random.sample(range(1, 11), 5)

userNumber = int(input('숫자입력(확률 50%): '))

if userNumber in randomNumbers:
    print('빙고')
else:
    print('다음 기회에')

print('randomNumbers: {}'.format(randomNumbers))
print('userNumber: {}'.format(userNumber))

-->
숫자입력(확률 50%): 2
다음 기회에
randomNumbers: [10, 4, 1, 8, 5]
userNumber: 2

실습) 문장에서 비속어가 있는지 알아내는 프로그램을 만들어보자

wrongWord = ['쫄았다', '짭새', '꼽사리', '먹튀', '지린', '쪼개다']
sentence = "짭새 등장에 강도들은 모두 쫄았다. 그리고 강도들은 지린 듯 도망갔다."

for word in wrongWord:
    if word in sentence:
        print('비속어: {}'.format(word))
        
-->
비속어: 쫄았다
비속어: 짭새
비속어: 지린

0개의 댓글