[Python] 리스트 선언, 삽입, 제거, 조회
리스트 선언, 요소 삽입, 요소 제거, 빈 리스트 확인, 값 조회, 인덱스 찾기
- 리스트에 대해 자세하게 정리가 잘 되어있음.
리스트 선언
#빈 리스트 선언
>>> list1 = []
>>> list1
[]
#리스트에 값 저장 : 여러 가지 자료형 저장 가능
>>> list2 = [1, 2, 'name', 12.3, True]
>>> list2
[1, 2, 'name', 12.3, True]
#리스트 안에 리스트를 내장할 수 있다.
>>> list3 = [1, 2, 3, ['hello', 'hi']]
>>> list3
[1, 2, 3, ['hello', 'hi']]
#이 경우 마지막 원소는 리스트가 출력됨.
>>> list3[3]
['hello', 'hi']
빈 리스트를 선언 후 append등으로 값을 추가할 수 있다.
[range를 사용해 리스트 만들기]
#0부터 9까지 숫자를 생성
>>> range(10)
range(0, 10)
#0부터 9까지 들어있는 리스트 생성
>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#리스트 = list(range(시작, 끝))
>>> b = list(range(5, 12))
>>> b
[5, 6, 7, 8, 9, 10, 11]
#리스트 = list(range(시작, 끝, 증가폭))
#증가폭은 음수도 가능하다. 음수는 감소
>>> c = list(range(-5, 5, 2))
>>> c
[-5, -3, -1, 1, 3]
리스트 요소 삽입(추가)
append, extend, insert 함수를 이용해 리스트에 항목을 추가할 수 있다.
[위치를 지정해서 삽입]
insert(a, b) 함수 : a번째 위치에 b를 삽입
리스트이름.insert(추가할 위치, 추가할 원소)
#list2 = [1, 2, 'name', 12.3, True]
>>> list2.insert(3, '추가')
>>> list2
[1, 2, 'name', '추가', 12.3, True]
[리스트의 맨 뒤에 항목 추가]
append 함수
리스트이름.append(추가할 원소)
#list2 = [1, 2, 'name', 12.3, True]
>>> list2.append('fish')
>>> list2
[1, 2, 'name', 12.3, True, 'fish']
>>> list2.append(13)
>>> list2
[1, 2, 'name', 12.3, True, 'fish', 13]
리스트 안에 또 다른 리스트도 추가 가능
#list2 = [1, 2, 'name', 12.3, True, 'fish', 13]
>>> list2.append([1,2,3])
>>> list2
[1, 2, 'name', 12.3, True, 'fish', 13, [1, 2, 3]]
extend 함수
extend(x) : x는 리스트, 원래 리스트에 x리스트를 더한다.
>>> list1 = [1, 2, 3]
#리스트를 직접 추가
>>> list1.extend([4, 5])
>>> list1
[1, 2, 3, 4, 5]
#선언된 리스트를 추가
>>> list2 = [6, 7, 8]
>>> list1.extend(list2)
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8]
#요소의 자료형을 각각 추가함
>>> list1.extend('hello')
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8, 'h', 'e', 'l', 'l', 'o']
#'hello'를 추가하고 싶으면 iterable 객체로 추가
>>> list1.extend(['hello'])
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8, 'h', 'e', 'l', 'l', 'o', 'hello']
※ append와 extend 차이
append와 extend는 주소값이 변하지 않고 리스트에 추가된다.
- append는 새로운 요소를 객체로 추가한다.
- extend는 iterable 자료형만 추가한다.
'hello'를 추가할 때 apeend함수를 이용하면 'hello' 그대로 추가하지만, extend 함수를 이용하면 'h' 'e' 'l' 'l' 'o' 로 추가된다.
extend 함수로 'hello'를 그대로 추가하려면 ['hello']로 추가해줘야 함.
*iterable 객체 : 반복 가능한 객체 (list, dict, set, bytes, tuple, range)
[+연산]
+를 사용하면 두 리스트를 더한 새로운 리스트를 반환한다.
>>> list1 = [1,2,3]
>>> list2 = [4,5,6]
#list1에 list2를 더한 리스트를 출력
>>> list1+list2
[1, 2, 3, 4, 5, 6]
#list1에 list2를 더한 리스트를 생성(list1에 list2가 추가됨)
>>> list1 = list1 + list2
>>> list1
[1, 2, 3, 4, 5, 6]
리스트 요소 제거
remove, del, pop
del a[x] : x번째 요솟값 삭제
>>> list1
[1, 2, 3, 4, 5, 6]
#list1[5]를 삭제
>>> del list1[5]
>>> list1
[1, 2, 3, 4, 5]
#슬라이싱 기법 사용 가능
>>> del list1[:3]
>>> list1
[4, 5]
리스트이름.remove(x) : 리스트에서 첫번째로 나오는 x를 삭제
>>> list1 = [1, 2, 3, 1, 2, 3]
#앞에 있는 1을 삭제
>>> list1.remove(1)
>>> list1
#남아 있는 1을 삭제
[2, 3, 1, 2, 3]
>>> list1.remove(1)
>>> list1
[2, 3, 2, 3]
삭제할 요소가 여러 개 있는 경우 앞에 있는 한 개만 제거된다.
리스트이름.pop() : 마지막 요소들 반환하고 요소는 삭제한다.
>>> list1
[1, 2, 3, 4, 5]
>>> list1.pop()
5
>>> list1
[1, 2, 3, 4]
>>> n = list1.pop()
>>> n
4
pop으로 꺼낸 요소를 변수에 저장해서 사용할 수 있다.
[모든 요소 삭제]
리스트이름.clear()
>>> list1
[1, 2, 3]
>>> list1.clear()
>>> list1
[]
빈 리스트 확인
빈 리스트는 false값을 가진다.
list = []
if not list:
print("List is empty")
len함수로 길이를 확인할 수도 있다.
list = []
if not len(list):
print("List is empty")
리스트 원소 접근
인덱스로 접근 가능.
인덱스 : 0 ~ 리스트의 길이-1
인덱스는 -도 가능하다. -1은 맨 마지막 원소, -2는 마지막에서 2번째 원소
>>> list2 = [1, 2, 'name', 12.3, True]
>>> list2[3]
12.3
>>> list2[0]
1
>>> list2[4]
True
>>> list2[-1]
True
>>> list2[-2]
12.3
>>> list2[-4]
2
슬라이싱
:(콜론)을 이용해 특정 인덱스부터 접근이 가능하다. ([:]은 리스트 전체를 의미)
[begin:end] : begin 부터 end-1까지를 의미함.
*슬라이싱은 문자열에서도 사용이 가능하다.
#리스트 전체
>>> list2[:]
[1, 2, 'name', 12.3, True]
#list2[1]부터 끝까지
>>> list2[1:]
[2, 'name', 12.3, True]
#list2[0]부터 list2[2]까지
>>> list2[:3]
[1, 2, 'name']
#list2[1]부터 list2[2]까지
>>> list2[1:3]
[2, 'name']
※내장된 리스트의 원소에 접근하려면?
톱니형 리스트 : 가로 크기가 불규칙한 리스트
이차원 이상의 리스트는 다른 포스팅에서 자세하게 다룰 예정.
1 | |
2 | |
3 | |
hello | hi |
#list3 = [1, 2, 3, ['hello', 'hi']]
>>> list3[3][0]
'hello'
>>> list3[3][1]
'hi'
리스트 값 변경
인덱스로 접근해 값 변경
>>> list1 = [1, 2, 3, 4, 5]
>>> list1[4]
5
>>> list1[4] = -1
>>> list1
[1, 2, 3, 4, -1]
해당 인덱스의 요소에 값을 대입하면 요솟값을 변경할 수 있다.
리스트 값 조회, 인덱스 찾기
in 연산자
list에 해당 항목이 존재하면 true를 반환한다.
list1 = ['apple', 'grape', 'banana', 'orange']
if 'apple' in list1:
print("True")
else:
print("False")
#True가 출력됨
not in 연산자는 항목이 없을 때 true를 반환
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8, 'h', 'e', 'l', 'l', 'o', 'hello']
#항목이 존재할 경우 false 반환
>>> 'h' not in list1
False
#항목이 없을 경우 true 반환
>>> 'hi' not in list1
True
list.index(값) : 입력한 값에 해당하는 요소의 인덱스를 반환해준다.
>>> list1 = ['apple', 'grape', 'banana', 'orange']
>>> list1.index('apple')
0
>>> list1.index('banana')
2
>>> n = list1.index('orange')
>>> list1[n]
'orange'