자료구조 (리스트)

Lee JunBok·2023년 5월 1일

자료구조

목록 보기
1/4
post-thumbnail

리스트(List)

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

[]를 이용해서 선언, 데이터 구분은 , 를 이용한다.(숫자, 문자(열), 논리형등 모든 기본데이터를 저장할 수 있다.)

students = ['홍길동', '이철수', '김영희', '박찬호', '이용규']

인덱스

아이템에 자동으로 부여되는 번호표

students = ['홍길동', '이철수', '김영희', '박찬호', '이용규']

print(students[0]) # 홍길동
print(students[1]) # 이철수
...
print(students[4]) # 이용규
print(students[5]) # Error

len()

리스트에 저장된 아이템개수 : 리스트 길이

students = ['홍길동', '이철수', '김영희', '박찬호', '이용규']
print(len(students)) # 5

문자열도 가능

str = 'Hello python!!'
print(len(str)) # 14

for문을 이용한 조회

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

cars = ['그랜저', '페라리', '포르쉐', '벤틀리', '람보르기니']

for i in range(len(cars)):
    print(cars[i])

for car in cars:
    print(car)

리스트 안에 리스트로 조회 가능하다.

studentsCnts = [[1,19], [2,30], [3,11], [4,17], [5,20]]

for i in range(len(studentsCnts)):
    print('{}학급 학생수: {}'.format(studentsCnts[i][0], studentsCnts[i][1]))

for classNo, cnt in studentsCnts:
    print('{}학급 학생수: {}'.format(classNo, cnt))

while문을 이용한 조회

while문을 이용하면 리스트에 아이템을 자동으로 조회할 수 있다.

cars = ['그랜져', '소나타', '마티즈', '페라리', '벤틀리']

n = 0
while n < len(cars):
    print(cars[n])
    n += 1
minScore = 60

score = [['국어', 58],
         ['영어', 77],
         ['수학', 89],
         ['과학', 99],
         ['국사', 50]]

n = 0
while n < len(score):
    if score[n][1] >= minScore:
        n += 1
        continue

    print('과락과목 : {}, 점수: {}'.format(score[n][0], score[n][1]))
    n += 1

enumerate()

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

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

for idx, value in enumerate(sports):
    print('{} : {}'.format(idx, value))
    
    0 : 농구
    1 : 축구
    2 : 수영
    3 : 마라톤
    4 : 테니스

append()

마지막 인덱스에 아이템을 추가할 수 있다.

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

sports.append('배드민턴')
print(sports) 
# ['농구', '축구', '수영', '마라톤', '테니스', '배드민턴']

insert()

특정위치(인덱스)에 아이템을 추가할 수 있다.

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

sports.insert(3, '배드민턴')
print(sports)
# ['농구', '축구', '수영', '배드민턴', '마라톤', '테니스']

pop()

마지막 인덱스에 해당하는 아이템을 삭제할 수 있다.

numbers = [2,4,8,11,17,26,30,55]

numbers.pop()
print(numbers)
# [2, 4, 8, 11, 17, 26, 30]

selectNum = numbers.pop() # 삭제된 아이템을 쓸 수 있다
print(selectNum) # 55

n위치에 있는 특정위치에 아이템을 삭제할 수 있다.

numbers = [2,4,8,11,17,26,30,55]

numbers.pop(2)
print(numbers)
# [2, 4, 11, 17, 26, 30, 55]
playerScore = [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
print(playerScore)

minScore = 0; maxScore = 0
minScoreIdx = 0; maxScoreIdx = 0

for idx, score in enumerate(playerScore):
    if idx == 0 or minScore > score:
        minScoreIdx = idx
        minScore = score
        
    if maxScore < score:
        maxScoreIdx = idx
        maxScore = score

print('minScore: {}, minScoreIdx: {}'.format(minScore, minScoreIdx))
print('maxScore: {}, maxScoreIdx: {}'.format(maxScore, maxScoreIdx))

playerScore.pop(minScoreIdx)
playerScore.pop(maxScoreIdx)

print(playerScore)

remove()

특정 아이템을 삭제할 수 있다.

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

students.remove('이용규')
print(students)
# ['홍길동', '박찬호', '강호동', '박승철', '김지은']

한개의 아이템만 삭제 가능하다.(삭제 데이터가 2개 이상이라면 while문 사용)

students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '박찬호']

while '박찬호' in students:
    students.remove('박찬호')

print(students)

extend()

리스트에 또 다른 리스트를 연결(확장)할 수 있다.
A.extend(B) = A # A의 확장

group1 = ['홍길동', '박찬호', '이용규']
group2 = ['강호동', '박승철', '김지은']

group1.extend(group2)

print(group1) #['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print(group2) #['강호동', '박승철', '김지은']

덧셈 연사자를 이용하여 연결할 수 있다.
A + B = C 새로운 리스트의 탄생

result = group1 + group2

print(result) # ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print(group1) # ['홍길동', '박찬호', '이용규']
print(group2) # ['강호동', '박승철', '김지은']

sort()

아이템을 정렬할 수 있다.
오름차순 : sort(reverse=False) < 기본값
내림차순 : sort(reverse=True)

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

students.sort()
print(students)
# ['강호동', '김지은', '박승철', '박찬호', '이용규', '홍길동']

reverse()

아이템의 순서를 뒤집을 수 있다.

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

students.reverse()
print(students)
# ['김지은', '박승철', '강호동', '이용규', '박찬호', '홍길동']

[n:m] 슬라이싱

리스트슬라이싱 : 리스트에서 원하는 아이템만 뽑아낼수 있다.
n <= x < m

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

print(students[2:4]) # ['이용규', '강호동']
print(students[:4]) # ['홍길동', '박찬호', '이용규', '강호동']
print(students[2:]) # ['이용규', '강호동', '박승철', '김지은']
print(students[2:-2]) # ['이용규', '강호동']

슬라이싱을 이용해 아이템을 변경할 수 있다.

slice()함수로 슬라이스 이용할 수 있다.

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

print(students[slice(2,4)]) # ['이용규', '강호동']
print(students[slice(2, len(students))]) # ['이용규', '강호동', '박승철', '김지은']
print(students[slice(len(students)-5, len(students)-2)]) # ['박찬호', '이용규', '강호동']

리스트 곱셈연산

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

students = ['홍길동', '박찬호', '이용규']

print(students * 2) # ['홍길동', '박찬호', '이용규', '홍길동', '박찬호', '이용규'] 

index() 아이템 위치찾기

index(item) 함수를 item의 인덱스를 알아낼 수 있다.

students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '이용규']

searchIdx = students.index('이용규', 3, 6) # 인덱스3~6사이에 이용규의 인덱스를 찾는다.

print(searchIdx) # 5

count()

특정 아이템의 개수를 알아낼 수 있다.

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

searchCnt = students.count('강호동')
print(searchCnt) # 2

del

del 키워드를 이용하면 특정 아이템을 삭제할 수 있다.

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

del students[1:4]
print(students) # ['홍길동', '박승철', '김지은', '강호동']

이글은 제로베이스 데이터 취업스쿨의 강의자료 일부를 발췌하여 작성되었습니다.

profile
Learning Data Analyst

0개의 댓글