여러 개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라고 하고, 이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.
students = ['홍길동','박찬호'] # 리스트 jobs = {'의사','간호사','회계사'} # 튜플 scores = {'kor':88, 'eng':81} # 딕셔너리 allSales = {100, 150, 90} # 세트
리스트
여러 개의 데이터를 나열한 자료구조student1 = 'David' student2 = 'Sam' student3 = 'Sean' students = ['David','Sam','Sean'] # 리스트 선언
✅ 리스트는 [ ]
를 통해 선언하고, 데이터 구분은 ,
로 한다.
리스트의 아이템은 순서대로 0번, 1번, 2번,... 순으로 번호가 지정된다. 아이템을 확인하려면
list[원하는 번호]
를 통해 확인할 수 있다.
students = ['David','Sam','Sean']
print(students[0])
print(students[1])
print(students[2])
David Sam Sean
리스트의 길이는 리스트에 저장된 아이템 개수이다.
students = ['David','Sam','Sean']
print(len(students))
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
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
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
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']
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']
extend()
extend()
함수를 이용하면 리스트에 또 다른 리스트를 연결(확장)할 수 있다.
students1 = ['David','Sam','Sean','Amy']
students2 = ['Gianna','Jeff','Michelle']
students1.extend(students2)
print(students1)
['David', 'Sam', 'Sean', 'Amy', 'Gianna', 'Jeff', 'Michelle']
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']
[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']
✅ *
를 사용하면 리스트를 반복 출력한다.
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']