[Python] 리스트(List)
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 : ['김지은', '박승철', '강호동', '이용규', '박찬호', '홍길동']