[제로베이스] [자료구조] 리스트

한결·2023년 12월 20일
0
post-thumbnail

1. 자료구조

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

students = ['홍길동','박찬호'] # 리스트
jobs = {'의사','간호사','회계사'} # 튜플
scores = {'kor':88, 'eng':81} # 딕셔너리
allSales = {100, 150, 90} # 세트

2. 리스트

리스트
여러 개의 데이터를 나열한 자료구조

student1 = 'David'
student2 = 'Sam'
student3 = 'Sean'

students = ['David','Sam','Sean'] # 리스트 선언

✅ 리스트는 [ ]를 통해 선언하고, 데이터 구분은 ,로 한다.


2-1. 리스트 아이템 조회

리스트의 아이템은 순서대로 0번, 1번, 2번,... 순으로 번호가 지정된다. 아이템을 확인하려면 list[원하는 번호]를 통해 확인할 수 있다.

students = ['David','Sam','Sean']

print(students[0])
print(students[1])
print(students[2])
David
Sam
Sean

2-2. 리스트의 길이

리스트의 길이는 리스트에 저장된 아이템 개수이다.

students = ['David','Sam','Sean']

print(len(students))
3

2-3. 리스트와 for

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

students = ['David','Sam','Sean','Amy']

for student in students:
	print(student)
David
Sam
Sean
Amy

for문을 이용해 리스트 내부에 또다른 리스트의 아이템을 조회할 수 있다.

students = [['David',1],['Sam',3],['Sean',4],['Amy',6]]

for student, grade in students:
	print(f'이름: {student}, 학년: {grade}')
이름: David, 학년: 1
이름: Sam, 학년: 3
이름: Sean, 학년: 4
이름: Amy, 학년: 6

2-4. 리스트와 while

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

students = ['David','Sam','Sean','Amy']

# 1번 표현
n=0
while n<len(students):
    print(students[n])
    n += 1

# 2번 표현
n=0
flag = True
while flag:
    print(students[n])
    n += 1
    if n == len(students):
        flag = False

# 3번 표현
n=0
while True:
    print(students[n])
    n += 1
    if n == len(students):
        break

전부 같은 결과가 나온다.

David
Sam
Sean
Amy

2-5. enumerate()

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

students = ['David','Sam','Sean','Amy']

for idx, value in enumerate(students):
    print(f'{idx} : {value}')
0 : David
1 : Sam
2 : Sean
3 : Amy

사용자가 입력한 문자열에서 공백의 개수를 출력해보자.

word = input('문장을 입력하세요: ')
cnt = 0

for idx, value in enumerate(word):
    if value == ' ':
        cnt+=1

print(f'공백의 개수: {cnt}')
문장을 입력하세요: 123 123 123
공백의 개수: 2

2-6. 아이템 추가하기

append()

append() 함수를 이용하면 마지막 인덱스에 아이템을 추가할 수 있다.

students = ['David','Sam','Sean','Amy']

students.append('Gianna')

print(students)
['David', 'Sam', 'Sean', 'Amy', 'Gianna']

insert()

insert() 함수를 이용하면 특정 위치에 아이템을 추가할 수 있다.

students = ['David','Sam','Sean','Amy']

students.insert(3, 'Gianna') # 2번 인덱스 뒤 즉 'Sam' 뒤에 삽입

print(students)
['David', 'Sam', 'Sean', 'Gianna', 'Amy']

2-7.아이템 삭제하기

pop()

pop() 함수를 이용하면 마지막 인덱스의 아이템을 삭제할 수 있다.

students = ['David','Sam','Sean','Amy']

students.pop()

print(students)
['David', 'Sam', 'Sean']

pop(index number) 함수를 이용하면 특정 위치의 아이템을 삭제할 수 있다.

students = ['David','Sam','Sean','Amy']

students.pop(2) # 2번 인덱스 'Sean'을 삭제

print(students)
['David', 'Sam', 'Amy']

remove()

remove() 함수를 이용하면 특정 아이템을 삭제할 수 있다.

students = ['David','Sam','Sean','Amy']

students.remove('David')

print(students)
['Sam', 'Sean', 'Amy']

2-8. 리스트 연결(확장)

extend()

extend() 함수를 이용하면 리스트에 또 다른 리스트를 연결(확장)할 수 있다.

students1 = ['David','Sam','Sean','Amy']
students2 = ['Gianna','Jeff','Michelle']

students1.extend(students2)
print(students1)
['David', 'Sam', 'Sean', 'Amy', 'Gianna', 'Jeff', 'Michelle']

2-9. 리스트 아이템 정렬

sort()

sort() 함수를 이용하면 아이템을 정렬할 수 있다.

students = ['David', 'Sam', 'Sean', 'Amy', 'Gianna', 'Jeff', 'Michelle']

students.sort() # 오름차순 정리 (사전식)
print(students)

students.sort(reverse=True) # 내림차순 정리 (사전식 반대)
print(students)
['Amy', 'David', 'Gianna', 'Jeff', 'Michelle', 'Sam', 'Sean']
['Sean', 'Sam', 'Michelle', 'Jeff', 'Gianna', 'David', 'Amy']

reverse()

reverse() 함수를 이용하면 아이템 순서를 뒤집을 수 있다.

students = ['David', 'Sam', 'Sean', 'Amy', 'Gianna', 'Jeff', 'Michelle']

students.reverse()

print(students)
['Michelle', 'Jeff', 'Gianna', 'Amy', 'Sean', 'Sam', 'David']

2-10. 리스트 슬라이싱

[n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다.

students = ['David', 'Sam', 'Sean', 'Amy', 'Gianna', 'Jeff', 'Michelle']

print(students[3:6]) # 3번 인덱스부터 5번 인덱스까지 호출
['Amy', 'Gianna', 'Jeff']

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

students = ['David', 'Sam', 'Sean', 'Amy', 'Gianna', 'Jeff', 'Michelle']

students[3:6] = [1,2,3] # 3번 인덱스부터 5번 인덱스까지 변경

print(students)
['David', 'Sam', 'Sean', 1, 2, 3, 'Michelle']

slice()

slice()함수를 이용해 아이템을 슬라이싱할 수 있다.

students = ['David', 'Sam', 'Sean', 'Amy', 'Gianna', 'Jeff', 'Michelle']

new_students = students[slice(3,5)]

print(students)
print(new_students)
['David', 'Sam', 'Sean', 'Amy', 'Gianna', 'Jeff', 'Michelle']
['Amy', 'Gianna']

2-11. 그 외 기능들

* 를 사용하면 리스트를 반복 출력한다.

students = ['David', 'Sam', 'Sean', 'Amy']

print(students*3)
['David', 'Sam', 'Sean', 'Amy', 'David', 'Sam', 'Sean', 'Amy', 'David', 'Sam', 'Sean', 'Amy']

index(item) : item의 인덱스를 알 수 있다.

students = ['David', 'Sam', 'Sean', 'Amy', 'Gianna', 'Jeff', 'Michelle']

print(students.index('Sean'))
2

count() : 특정 아이템의 개수를 알 수 있다.

students = ['David', 'Sam', 'Sean', 'Amy', 'Gianna', 'Jeff', 'Michelle','David','David']

print(students.count('David'))
3

✅ `del' : 특정 아이템을 삭제할 수 있다.

students = ['David', 'Sam', 'Sean', 'Amy', 'Gianna', 'Jeff', 'Michelle']

del students[2:] # 2번 인덱스부터 전부 삭제

print(students)
['David', 'Sam']
profile
낭만젊음사랑

0개의 댓글