(DataStructure & Algorithm) List

임경민·2023년 9월 30일
1
post-thumbnail

Summarization


  • 자료구조는 컨테이너 자료형의 데이터 구조를 말하는 것으로, 각각의 컨테이너 자료형에 따라 차이가 있으며, 대표적인 컨테이너 자료형으로는 리스트(List), 튜플(Tuple), 딕셔너리(Dic), 세트(Set)가 있다.
  • 리스트 조회는 아이템에 자동으로 부여되는 인덱스(Index)를 이용하여 조회 가능하며, len() 함수를 통해 리스트의 갯수를 알 수 있다.
  • 인덱스와 아이템을 한 번에 조회할 경우 enumerate() 함수를 사용한다.
  • 리스트에 아이템을 추가하는 방법으로는 append()insert()가 있다.
  • 리스트도 곱셈 연산이 가능하며, 특정 아이템의 인덱스갯수를 알아낼 수 있다. 필요없는 아이템은 삭제 가능하다.

Contents


  • 자료구조 : 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.
    • 컨테이너 자료형 : 여러 개의 데이터가 묶여있는 자료형
# 리스트
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print(students)
print(type(students))

# 튜플
students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
print(students)
print(type(students))

# 딕셔너리
scores = {'kor':95, 'eng':80, 'mat':100}
print(scores)
print(type(scores))

# 세트
allSales = {100, 200, 500, 200}
print(allSales)
print(type(allSales))
  • 리스트 : 배열과 같이 여러 개의 데이터를 나열한 자료구조

‘[]’ 를 이용해서 선언하고, 데이터 구분은 ‘,’를 이용

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

숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있음

strs = [3.14, '십', 20, 'one', '3.141592']
print('Strs : {}' .format(strs))
print(type(strs))

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

리스트 아이템 조회

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

  • 0부터 순차적으로 저장

리스트 아이템은 인덱스를 이용해서 조회 가능
리스트에서 아이템을 개별적으로 뽑았을 때, Type은 유지

students = ['박찬호', '홍길동', '이용규', '박승철', '김지은']
print(students[1])
  • 리스트 길이 : 리스트 길이 : 리스트에 저장된 아이템의 개수
    len() : 문자열, 리스트, 목록, 튜플, 딕셔너리 등의 길이를 반환함

len()과 반복문을 이용하면 리스트의 아이템 조회가 가능

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

for i in range(len(students)):
    print(f'i = {i}')
    print(f'student {i} : {students[i]}')

len() 함수는 리스트의 갯수 뿐만 아니라 문자열의 길이도 알 수 있다.

String = 'Hello Python'
print(len(String))

len() 함수를 이용하지 않아도 리스트 내 아이템들을 출력할 수 있다.

myFavoriteSport = ['농구', '탁구', '헬스' , '클라이밍']

for item in myFavoriteSport:
    print(item)

리스트와 for문

for문을 이용하면 리스트의 아이템을 자동으로 참조할 수 있다.
리스트 내 또 다른 리스트의 아이템을 조회할 수도 있다.
1. 변수 1개 설정

studentsCnts = [[1, 19], [2, 20], [3, 22] ,[4, 18], [5, 21]]

for i in range (len(studentsCnts)):
    print('{}학급 학생수 : {}' .format(studentsCnts[i][0], studentsCnts[i][1]))
  1. 변수 여러개 설정
studentsCnts = [[1, 19], [2, 20], [3, 22] ,[4, 18], [5, 21]]

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

리스트와 While문

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

cars = ['그랜저', '소나타', '밸로스터', '코나', '투싼', '베라크루즈']

n = 0

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

    if n == len(cars):
        flag = False

enumerate()함수 : 인덱스와 아이템을 한 번에 조회

리스트를 사용할 때 유용

sports = ['농구', '클라이밍', '탁구', '볼링', '헬스', '축구']

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

문자열에도 사용 가능

str = 'Hello python'
for idx, value in enumerate(str):
    print('{} : {}' . format(idx, value))

리스트에 아이템 추가

.append() : 마지막 인덱스에 아이템 추가

students = ['홍길동', '박찬호', '홍대광', '류현기', '김지현']

print('students : {}' .format(students))
print('students length : {}' .format(len(students)))
print('last index : {}' .format(len(students) - 1))
print()
students.append('강호동')

print('students : {}' .format(students))
print('students length : {}' .format(len(students)))
print('last index : {}' .format(len(students) - 1))

리스트 특정 위치 아이템 추가

.insert() : 특정 위치(인덱스)에 아이템을 추가

students = ['홍길동', '박찬호', '홍대광', '류현기', '김지현']

print('students : {}' .format(students))
print('students length : {}' .format(len(students)))
print('last index : {}' .format(len(students) - 1))
print()

students.insert(3, '강호동')
print('students : {}' .format(students))
print('students length : {}' .format(len(students)))
print('last index : {}' .format(len(students) - 1))

for idx, name in enumerate(students):
    print('{} : {}' .format(idx, name))

리스트 아이템 삭제

.pop() : 마지막 인덱스에 해당하는 아이템 삭제

students = ['홍길동', '박찬호', '홍대광', '류현기', '김지현']

print('students : {}' .format(students))
print('students length : {}' .format(len(students)))
print()

students.pop()
print('students : {}' .format(students))
print('students length : {}' .format(len(students)))

리스트 특정 아이템 삭제

.remove() : 리스트 내 특정 아이템 삭제

students = ['홍길동', '박찬호', '홍대광', '류현기', '김지현']

print('Remove 진행 전 : {}' .format(students))
students.remove('류현기')
print('Remove 진행 후 : {}' .format(students))
  • remove()는 한 개의 아이템만 삭제 가능
    • 2개 이상의 데이터를 삭제 할 경우, while문을 이용

리스트 연결

extend() : 리스트에 또 다른 리스트를 연결(확장)

group1 = ['홍길동', '박찬호']
group2 = ['강호동', '박승철']

print('group1 : {}' .format(group1))
print('group2 : {}' .format(group2))

group1.extend(group2)
print('group1 : {}' .format(group1))
print('group2 : {}' .format(group2))

리스트 아이템 정렬

  • 오름차순 또는 내림차순으로 정렬

sort() : 오름차순 정렬
※ 내림차순의 경우, Option을 주어 변경 sort(reverse = True)

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

students.sort()
print('students 오름차순 : {}' .format(students))

students.sort(reverse = True)
print('students 내림차순: {}' .format(students))

리스트 순서 뒤집기

reverse() : 아이템 순서를 뒤집을 수 있다.

numbers = [2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14]
print('numbers : {}' .format(numbers))

numbers.reverse()
print('numbers : {}' .format(numbers))

리스트 슬라이싱

  • [n:m][n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다.
    • 앞 숫자(nn)를 생략하면, 처음부터 mm까지 뽑아낼 수 있음
    • 뒷 숫자(mm)를 생략하면 nn부터 끝까지 뽑아낼 수 있음
    • 음수를 사용하면, 뒤에서부터 계산
students = ['홍길동', '박찬호', '이준', '성멸치', '류현기', '김지현']
print('student: {}'. format(students))
print('student: {}'. format(students[3:5]))

슬라이싱 단계 설정

  • 슬라이싱 할 때, 단계를 설정할 수 있다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print('numbers: {}' .format(numbers[2::2]))

slice() : 아이템을 슬라이싱하는 전용 함수
slice(AA, BB) : AA 인덱스부터 BB개 슬라이싱 한다.

리스트 나머지 기능

  • 리스트도 곱셈 연산이 가능
    • 리스트를 곱셈 연산 ▶ 아이템 반복
number = [1, 2, 3]
print('number : {}' .format(number))

numberMul = number * 2
print('numberMul : {}' .format(numberMul))
  • 특정 아이템의 인덱스를 찾을 수 있음

index(item) : item의 인덱스를 뽑아냄
index(item, aa, bb) : aa부터 bb 앞까지 item의 인덱스 범위 설정 후, index 추출

lostark = ['데런', '실린', '슈샤', '요즈', '실린', '애니츠', '실린']
print('lostark : {}' .format(lostark))

searchIdx = lostark.index('실린', 3, 8)
print('searchIdx : {}' .format(searchIdx))
  • 특정 아이템의 갯수를 알아낼 수 있음

count() : 특정 아이템의 갯수를 알아낼 수 있음

lostark = ['데런', '실린', '슈샤', '요즈', '실린', '애니츠', '실린']
print(f'실린 : {lostark.count("실린")}')
  • 필요없는 아이템은 삭제 가능
    • slicing을 이용하여 한 번에 여러 개 삭제 가능

del() : 특정 아이템을 삭제

lostark = ['데런', '실린', '슈샤', '요즈', '실린', '애니츠', '실린']
print(f'lostark : {lostark}')

del lostark[1]
print(f'lostark : {lostark}')

0개의 댓글