-
[Python] 리스트(List)Language/자료구조 2024. 5. 21. 09:29
1. 리스트 선언
- '[ ]'를 이용해서 선언하고 , 데이터구분은 ','를 이용한다.
- 데이터하나하나를 아이템(요소)라고 한다,
- 리스트 안에는 숫자,문자,논리형등의 기본 데이터와 또 다른 컨테이너 자료형 데이터를 저장할 수 있다.
2. 인덱스
리스트의 아이템은 인덱스를 이용해서 조회가능하다.
students = ['홍길동','박찬호','이용규','박승철','김지은'] print('students: {}'.format(students)) print(students[0]) print(type(students)) print(type(students[0])) >>> students: ['홍길동', '박찬호', '이용규', '박승철', '김지은'] 홍길동 <class 'list'> <class 'str'>
3. 리스트 길이
students = ['홍길동','박찬호','이용규','박승철','김지은'] sLength = len(students) print(sLength) >>> 5
4. 아이템 추가
1) append
: append() 함수를 이용하면, 마지막 인덱스에 아이템을 추가할 수 있다.
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은'] print('students : {}'.format(students)) print('students : {}'.format(len(students))) students.append('강호동') print('students : {}'.format(students)) print('students : {}'.format(len(students))) >>> students : ['홍길동', '박찬호', '이용규', '박승철', '김지은'] students : 5 students : ['홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동'] students : 6
2) insert
: insert() 함수를 잉하면, 특정위치(인덱스)에 아이템을 추가할 수 있다.
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은'] students.insert(2,'강호동') print('students : {}'.format(students)) print('students : {}'.format(len(students)))
ex) 입력받은 숫자 오름차순 정렬
numbers = [1,3,6,11,45,54,62,74,85] inputNumber = int(input('숫자입력 : ')) insertIdx = 0 for idx,number in enumerate(numbers): print(idx,number) if inputNumber < number: # if insertIdx == 0 and inputNumber < number: insertIdx = idx numbers.insert(insertIdx, inputNumber) print('numbers : {}'.format(numbers))
5. 아이템 삭제
1) pop
: pop() 함수를 이용하면 마지막 인덱스에 해당하는 아이템을 삭제 할 수 있다.
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은'] students.pop() print('students : {}'.format(students)) >>> students : ['홍길동', '박찬호', '이용규', '박승철']
pop(n) : n인덱스에 해당하는 아이템 삭제
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은'] rValue = students.pop(1) # pop()은 지워진 값의 index를 반환 print('students : {}'.format(students)) print('삭제한 아이템 : {}'.format(rValue)) >>> students : ['홍길동', '이용규', '박승철', '김지은'] 삭제한 아이템 : 박찬호
2) remove
: remove() 함수를 이용하면, 특정 아이템을 삭제할 수 있다.
students = ['홍길동', '박찬호', '이용규','강호동', '박승철', '김지은', '강호동'] print('students : {}'.format(students)) students.remove('강호동') print('students : {}'.format(students)) >>> students : ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동'] students : ['홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동']
remove는 동일한 이름이여도 앞에 있는 한개의 아이템만 삭제가능하다.
만약 삭제하려는 데이터가 2개이상이면 while문 사용
students = ['홍길동', '박찬호', '이용규','강호동', '박승철', '김지은', '강호동'] print('강호동' in students) print('students : {}'.format(students)) while '강호동' in students: students.remove('강호동') print('students : {}'.format(students)) >>> True students : ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동'] students : ['홍길동', '박찬호', '이용규', '박승철', '김지은']
3) del 키워드
students = ['홍길동', '박찬호', '이용규','강호동', '박승철', '김지은', '강호동'] print('students : {}'.format(students)) del students[1] print('students : {}'.format(students)) >>> students : ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동'] students : ['홍길동', '이용규', '강호동', '박승철', '김지은', '강호동']
슬라이싱 사용가능
students = ['홍길동', '박찬호', '이용규','강호동', '박승철', '김지은', '강호동'] print('students : {}'.format(students)) del students[1:4] print('students : {}'.format(students)) >>> students : ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동'] students : ['홍길동', '박승철', '김지은', '강호동']
pop vs remove vs del
remove : 지우고자하는 인덱스가 아닌, 값을 입력
pop,del : 지우고자하는 리스트의 인덱스를 받아서 지우는 방식
pop()은 지워진 값의 index를 반환, 리스트의 범위를 지정하여 삭제못함
del 은 명령어로 반환값x, 리스트의 범위 지정가능 (*속도가 가장빠름)
6. 리스트 연결(확장)
1) extend
: extend() 함수를 이용하면, 리스트에 또 다른리스트를 연결 할 수 있다.
group1 = ['홍길동','박찬호', '이용규'] group2 = ['강호동', '박승철', '김지은'] print(f'group1 : {group1} ') print(f'group2 : {group2} ') group1.extend(group2) print(f'group1 : {group1} ') print(f'group2 : {group2} ') >>> group1 : ['홍길동', '박찬호', '이용규'] group2 : ['강호동', '박승철', '김지은'] group1 : ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은'] group2 : ['강호동', '박승철', '김지은']
2) 덧셈연산자
* extend vs 덧셈연산자
: extend : a + b = a / 덧셈연산자 : a + b = c
group1 = ['홍길동','박찬호', '이용규'] group2 = ['강호동', '박승철', '김지은'] print(f'group1 : {group1} ') print(f'group2 : {group2} ') # group1.extend(group2) result = group1 + group2 print(f'result : {result} ') print(f'group1 : {group1} ') print(f'group2 : {group2} ') >>> group1 : ['홍길동', '박찬호', '이용규'] group2 : ['강호동', '박승철', '김지은'] result : ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은'] group1 : ['홍길동', '박찬호', '이용규'] group2 : ['강호동', '박승철', '김지은']
ex) 리스트1과 리스트2 중복값제외하고 합치기
myFavoritNumbers = [1,3,5,6,7] friendFavoritNumbers = [2,3,5,8,10] print(f'myFavoritNumbers: {myFavoritNumbers}') print(f'friendFavoritNumbers: {friendFavoritNumbers}') addList = myFavoritNumbers + friendFavoritNumbers print(f'addList: {addList}') result = [] for number in addList: if number not in result: result.append(number) print(f'result: {result}') >>> myFavoritNumbers: [1, 3, 5, 6, 7] friendFavoritNumbers: [2, 3, 5, 8, 10] addList: [1, 3, 5, 6, 7, 2, 3, 5, 8, 10] result: [1, 3, 5, 6, 7, 2, 8, 10]
7. 아이템 정렬
1) sort
sort(reverse=False) : 오름차순 (기본값 설정되어 생략해도됨)
sort(reverse=True) : 내림차순
students = ['홍길동', '박찬호', '이용규','강호동', '박승철', '김지은'] print(f'students : {students}') # 오름차순 students.sort(reverse=False) print(f'students : {students}') # 내림차순 students.sort(reverse=True) print(f'students : {students}') >>> students : ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은'] students : ['강호동', '김지은', '박승철', '박찬호', '이용규', '홍길동'] students : ['홍길동', '이용규', '박찬호', '박승철', '김지은', '강호동']
2) reverse
: reverse() 함수를 이용하면 아이템순서를 뒤집을 수 있다.
students = ['홍길동', '박찬호', '이용규','강호동', '박승철', '김지은'] print(f'students : {students}') students.reverse() print(f'students : {students}') >>> students : ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은'] students : ['김지은', '박승철', '강호동', '이용규', '박찬호', '홍길동']
'Language > 자료구조' 카테고리의 다른 글
리스트(List) > 그 외 기능 (0) 2024.05.23 리스트(List) > 슬라이싱 (0) 2024.05.23 [Python] enumerate() 함수 (0) 2024.05.22 [Python] 리스트(List) > 리스트와 반복문 (0) 2024.05.21 자료구조 (0) 2024.05.20