[Python][자료구조] 리스트와 반복문 : 아이템 조회

·2023년 3월 19일
0
post-thumbnail

✒️ 자료구조

자료구조 란?
여러개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라고 하고, 이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.

자료구조는 각각의 컨테이너 자료형에 따라서 차이가 있으며, 파이썬의 대표적인 컨테이너 자료형으로는 리스트(List), 튜플(Tuple), 딕셔너리(Dic),셋트(Set)가 있다.

player1 = '강백호'
player2 = '서태웅'
player3 = '김대협'
player4 = '정대만'

# 리스트, 데이터 변경 가능
plyers = [player1, player2, player3, player4]
print(plyers)
print(type(plyers))

# 튜플, 데이터 변경 불가
plyers = (player1, player2, player3, player4)
print(plyers)
print(type(plyers))

# 딕셔너리, 데이터 변경 가능
scores = {'kor': 95, 'eng': 80, 'mat': 100}
print(scores)
print(type(scores))

# 셋, 데이터 변경 가능, 중복데이터 불가능
nums = {100, 200, 300, 400, 200}
print(nums)
print(type(nums))

💡result

['강백호', '서태웅', '김대협', '정대만']
<class 'list'>
('강백호', '서태웅', '김대협', '정대만')
<class 'tuple'>
{'kor': 95, 'eng': 80, 'mat': 100}
<class 'dict'>
{200, 100, 400, 300}
<class 'set'>

✒️ 리스트(list) 란?

배열과 같이 여러개의 데이터를 나열한 구조

  • '[ ]'를 이용해서 선언하고, 데이터 구분은 ','를 이용한다.

  • 숫자,문자,논리형 등 기본 모든 데이터를 같이 저장할 수 있다.

  • 리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.

# 리스트

player1 = '강백호'
player2 = '서태웅'
player3 = '김대협'
player4 = '정대만'

# 리스트, 데이터 변경 가능
plyers = [player1, player2, player3, player4]
print(plyers)
print(type(plyers))

numbers = [10, 20, 30, 40, 60]
print(f'numbers = {numbers}')
print(type(numbers))

types = [player1, 10, 189.2, '조던']
print(f'types =  {types}')
print(type(types))

💡result
['강백호', '서태웅', '김대협', '정대만']
<class 'list'>
numbers = [10, 20, 30, 40, 60]
<class 'list'>
types =  ['강백호', 10, 189.2, '조던']
<class 'list'>

📌아이템 조회

인덱스란, 아이템에 자동으로 부여되는 번호표

print(f'player1 : {plyers[0]}')
print(f'player1 : {plyers[1]}')
print(f'player1 : {plyers[2]}')
print(f'player1 : {plyers[3]}')

💡result
player1 : 강백호
player1 : 서태웅
player1 : 김대협
player1 : 정대만

📌아이템 개수

리스트 길이란, 리스트에 저장된 아이템 개수
함수 len() 사용


print(f'list 길이 : {len(plyers)}')

💡result
list 길이 : 4

len()과 반복문을 이용한 조회

for i in range(len(plyers)):
    print(f'play[{i}] : {plyers[i]}')


💡result
play[0] : 강백호
play[1] : 서태웅
play[2] : 김대협
play[3] : 정대만

📌for문을 이용한 조회

for문을 이용하면 리스트의 아이템을 자동으로 참조할 수 있다

for item in plyers:
    print(f'player : {item}')

💡result
player : 강백호
player : 서태웅
player : 김대협
player : 정대만

아이템을 한번에 가져오기


studentCnt = [[1, 19], [2, 20], [3, 33], [4, 28]]
for item1, item2 in studentCnt:
    print(f'학급 {item1} : 학생 수  {item2}')



💡result
학급 1 : 학생 수  19
학급 2 : 학생 수  20
학급 3 : 학생 수  33
학급 4 : 학생 수  28

✍️ 실습

for문과 of문을 이용해서 과락 과목 출력하기


minScore = 60
scores = [['수학', 70], ['영어', 80], ['국어', 70], ['과학', 50]]
for subject, score in scores:
    if score<60:
        print(f'{subject} : FAIL')
    else:
        print(f'{subject} : PASS')


💡result

수학 : PASS
영어 : PASS
국어 : PASS
과학 : FAIL
scores2 = [['JANE', '영어', 90], ['YUN', '수학', 80], ['JADE', '국어', 70], ['CRUSH', '영어', 50]]
for name, subject, score in scores2:
    print(f'{name}{subject} 점수 : {score}')

💡result
JANE의 영어 점수 : 90
YUN의 수학 점수 : 80
JADE의 국어 점수 : 70
CRUSH의 영어 점수 : 50


📌리스트와 While문

while문을 이용하면 다양한 방법으로 아이템 조화가 가능하다


#1 len() 이용
cars = ['그랜저', '소나타', '말리부', '카니발']

n = 0
while n < len(cars):
    print(f'car : {cars[n]}')
    n += 1

#2 flag 변수 이용 
n = 0
flag = True
while flag:
    print(f'car : {cars[n]}')
    n += 1
    if n == len(cars):
        flag = False

#3 break 이용 

while True:
    print(f'car : {cars[n]}')
    n += 1
    if n == len(cars):
        break


💡result
car : 그랜저
car : 소나타
car : 말리부
car : 카니발

while문을 이용한 조회



scores = [['수학', 70],
          ['영어', 80],
          ['국어', 70],
          ['과학', 50]]

n = 0
minScore = 60
while n < len(scores):
    # print(f'과목 : {scores[n][0]}', end='')
    # print(f'score : {scores[n][1]}')
    if scores[n][1] < minScore:
        print('과락 과목 : {} 성적 : {}'.format(scores[n][0], scores[n][1]))
    n += 1


# continue 이용 
n = 0
minScore = 60
while n < len(scores):
    if scores[n][1] > minScore:
        n += 1
        continue
    print('과락 과목 : {} 성적 : {}'.format(scores[n][0], scores[n][1]))
    n += 1

✍️ 실습

while문을 이용해 학급 수가 가장 작은 학급과 가장 많은 학급 출력

def getMinMaxClass(students):
    max = [students[0][0], students[0][1]]  # 첫번쨰 학급 값으로 초기화
    min = [students[0][0], students[0][1]]  # 첫번쨰 학급 값으로 초기화

    n = 0
    while n < len(students):
        studentCnt = students[n][1]
        studentClass = students[n][0]

        if max[1] < studentCnt:
            max[1] = studentCnt
            max[0] = studentClass

        if min[1] > studentCnt:
            min[1] = studentCnt
            min[0] = studentClass


        n += 1

    print(f'학급 학생 수가 가장 많은 학급 --> {max[0]} : {max[1]}명')
    print(f'학급 학생 수가 가장 적은 학급 --> {min[0]} : {min[1]}명')


students = [
    ['1학급', 18],
    ['2학급', 19],
    ['3학급', 23],
    ['4학급', 21],
    ['5학급', 20],
    ['6학급', 22],
    ['7학급', 17],
]

getMinMaxClass(students)


💡result

학급 학생 수가 가장 많은 학급 --> 3학급 : 23명
학급 학생 수가 가장 적은 학급 --> 7학급 : 17

📌 enumerate() 함수

enumerate() 함수를 이용하면 아이템을 열거할 수 있다

sports = ['농구', '축구', '수구', '마라톤', '테니스']

for idx, value in enumerate(sports):
    print('{} : {}'.format(idx, value))


💡result

0 : 농구
1 : 축구
2 : 수구
3 : 마라톤
4 : 테니스

enumerate()는 문자열에도 적용할 수 있다.

str = '파이썬 자료구조 알고리즘'
for idx, value in enumerate(str):
    print('{} \t: {}'.format(idx, value))

💡result

0 	:1 	:2 	:3 	:  
4 	:5 	:6 	:7 	:8 	:  
9 	:10 	:11 	:12 	:

✍️ 실습

가장 좋아하는 스포츠 출력

sports = ['농구', '축구', '수구', '마라톤', '테니스']
favorite = input('가장 좋아하는 스포츠 입력 : ')

for idx, sport in enumerate(sports):
    if sport != favorite:
        continue

    print(f'가장 좋아하는 스포츠는 {idx+1}번째에 있는 {sport}입니다.')


💡result

가장 좋아하는 스포츠 입력 : 축구
가장 좋아하는 스포츠는 2번째에 있는 축구입니다.
profile
개발하고싶은사람

0개의 댓글