Python

[Python] 리스트 선언, 삽입, 제거, 조회

ruming 2022. 5. 19. 14:11

리스트 선언, 요소 삽입, 요소 제거, 빈 리스트 확인, 값 조회, 인덱스 찾기

 

리스트 자료형 - 점프 투 파이썬

- 리스트에 대해 자세하게 정리가 잘 되어있음.

 

리스트 선언

코딩 도장 10.1 리스트 만들기

#빈 리스트 선언
>>> 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'