🔍 자료구조
- 컨테이너 자료형*의 데이터 구조
- 대표적으로 리스트(List), 튜플(Tuple), 딕셔너리(Dic), 세트(Set)가 있음
- iterable 객체 : 하나 이상의 항목이 포함되어 있는 자료구조에서 데이터를 차례대로 꺼낼 수 있는 객체
List (데이터를 바꿀 수 있음)
student = ['홍길동', '박찬호', '이용규', '박승철']
Tuple(한번 데이터가 정해지면 바꿀 수 없음)
jobs = ('의사', '속기사', '전기기사', '감정평가사', '회계사')
Dic(key값에 해당하는 Value가 존대
scores = {'kor':88, 'eng':91, 'mat':95, 'sci':90, 'his':100}
Set(중복 데이터가 존재하지 않음.)
allSale = {100, 150, 90, 100} → {100, 150, 90}
cf. 컨테이너 자료형 : 여러 개의 데이터가 묶여있는 자료형
1. 리스트(List)
- 배열과 같이 여러 개의 데이터를 나열한 자료구조
- [] 를 이용해서 선언, 데이터 구분은 ' , '를 이용
- 모든 기본 형태의 데이터를 같이 저장할 수 있다.
strs = [3.14, '십', 20]
- 리스트에 또 다른 자료구조를 저장할 수 있다.
datas = [10, 20, 30, [40, 50, 60]]
1) 인덱스
- 아이템에 자동으로 부여되는 번호표. 0부터 시작
- 각각의 데이터는 인덱스를 이용하여 조회 가능
students = ['홍길동', '박찬호', '이용규', '박승철']
0 1 2 3 → 인덱스(index)
print('student[1] = {}.format(student[1]))
------------------
student[1] : 박찬호
2) 리스트의 길이
- 리스트에 저장된 아이템 개수(len)
sLength = len(students) → 4
tip) students는 레퍼런스 변수(주소값으 저장하고 호출 시 저장된 주소를 찾아감)
tip) for 반복문의 범위 지정할 때 용이하다. 예시) for i in range(len(students)):
- for 문을 이용하면 리스트의 아이템을 자동을 참조할 수 있다.
studentCnt = [[1, 19], [2, 20], [3,22], [4, 18], [5, 21]]
for classNo, cnt in studentCnts: → studentCnts : iterable 객체
print('{}학급 학생 수: {}.format(classNo, cnt)) → 1학급 학생 수: 19
2. enumerate() 함수
- 아이템 열거할 때 사용, 인덱스와 데이터를 한번에 사용 가능
- 문자열에도 사용 가능
sports = ['농구, '수구', '축구', '마라톤', '테니스']
for i in range(len(sports)):
for idx, value in enumerate(sports):
3. list 아이템 추가
1) append() 함수
- 마지막 인덱스에 아이템 추가
students = ['홍길동', '박찬호', '이용규', '박승철']
students.append(['김정주'])
students = ['홍길동', '박찬호', '이용규', '박승철', '김정주']
2) insert() 함수
- 특정 위치(인덱스)에 아이템 추가, 인수가 2개 필요
students = ['홍길동', '박찬호', '이용규', '박승철']
students.insert(2, '김정주')
students = ['홍길동', '박찬호', '김정주, '이용규', '박승철']
4. list 아이템 제거
1) pop() 함수
- 마지막 인덱스에 해당하는 아이템 제거
- pop(n) : n 인덱스에 해당하는 아이템 제거
2) remove() 함수
- 특정 아이템 삭제 가능
- 한 개의 아이템만 삭제 가능. 2개 이상 삭제하려면 while 문 이용
students = ['홍길동', '박찬호', '이용규', '박승철']
students.remove(['박찬호'])
students = ['홍길동', '이용규', '박승철']
students = ['홍길동', '박찬호', '이용규', '박승철', '박찬호', '박찬호']
while '박찬호' in students:
students.remove(['박찬호'])
5. list 와 list 연결
1) extend()
- 리스트와 리스트르 연결. 본인의 리스트에 아이템 추가
student1 = ['홍길동', '박찬호', '이용규', '박승철']
student2 = ['김정주', '이건희', '정의선']
student1.extend(group2)
2) +
- 새로운 리스트를 만듦. A + B = C(새로운 리스트)
student1 = ['홍길동', '박찬호', '이용규', '박승철']
student2 = ['김정주', '이건희', '정의선']
student3 = student1 + student2
6. list 정렬
1) sort()
- 오름차순으로 정렬
- 내림차순의 경우, sort(reverse=True)
num = [8, 11, 6, 5, 1]
num.sort() → [1, 5, 6, 8, 11]
num.sort(reverse=True) → [11, 8, 6, 5, 1]
2) reverse()
- 아이템의 순서를 뒤집음
- 정렬과는 관계가 없음
num = [8, 11, 6, 5, 1]
num.reverse() → [1, 5, 6, 11 , 8]
3) 알고리즘을 통한 정렬
7. list 슬라이싱
1) [n:m]
- 원하는 아이템만 뽑아낸다.
student1 = ['홍길동', '박찬호', '이용규', '박승철', '김학규', '안성훈']
student1[2:4] → 2 <= n < 4 → ['이용규', '박승철']
student1[:4] → n < 4 → ['홍길동', '박찬호', '이용규', '박승철']
student1[2:] → 2 <= n → ['이용규', '박승철', '김학규', '안성훈']
student1[2:-2] → 2 < n <= 2 → ['이용규', '박승철']
- 문자열도 슬라이싱이 가능하다.
str= 'apple'
str[2:4] → 2 <= n < 4 → [pl]
- 단계 설정도 가능하다.
student1 = ['홍길동', '박찬호', '이용규', '박승철', '김학규', '안성훈', '김태균']
student1[1:6:2] → ['박찬호', '박승철', '안성훈']
- 아이템 변경도 가능하다.
student1 = ['홍길동', '박찬호', '이용규', '박승철', '김학규', '안성훈', '김태균']
student1[1:6:2] = [park1, park2, ahn]
student1 = ['홍길동', 'park1', '이용규', 'park2, '김학규', 'ahn', '김태균']
2) slice()
- slice() 함수를 이용해서 슬라이싱할 수도 있다.
student1 = ['홍길동', '박찬호', '이용규', '박승철', '김학규', '안성훈']
student[slice(2,4)] → ['이용규', '박승철']
8. list 나머지 기능들
1) list 곱셈
- 리스트를 곱셈하면 아이템이 반복된다.
student1 = ['홍길동', '박찬호', '이용규']
std2 = student1 * 2 → ['홍길동', '박찬호', '이용규', '홍길동', '박찬호', '이용규']
2) index(item) 함수
- item의 index를 알 수 있다.
student1 = ['홍길동', '박찬호', '이용규']
student1.index('박찬호') → 1
student1 = ['홍길동', '박찬호', '이용규', '박찬호', '김태균', '손아섭']
student1.index('박찬호', 2, 4) → 2 <= n < 4 의 박찬호 찾기 → 3
3) count() 함수
- 특정 item의 개수 확인
student1 = ['홍길동', '박찬호', '이용규', '박찬호', '김태균', '손아섭']
student1.count('박찬호') → 2
4) del 키워드
- 특정 아이템 삭제
student = ['홍길동', '박찬호', '이용규', '박찬호', '김태균', '손아섭']
del student[1] → '박찬호' 삭제
del student[1:4] → '박찬호', '이용규', '박찬호', '김태균' 삭제
'Python > Python 기초' 카테고리의 다른 글
[파이썬 기초] 딕셔너리(Dictionary) (0) | 2022.05.04 |
---|---|
[파이썬 기초] 튜플(Tuple) (0) | 2022.05.03 |
[파이썬 기초] return과 print의 차이 (0) | 2022.04.30 |
[파이썬 기초] 추상클래스, 예외 (0) | 2022.04.28 |
[파이썬 기초] 오버라이딩 (0) | 2022.04.28 |