티스토리 뷰

Language/PYTHON

리스트 (2) 리스트 연산자

구일일구 2021. 6. 16. 18:33
반응형

리스트 연산자

(1) 연결(+)

list_a = [1,2,3]
list_b = [4,5,6]

print(list_a + list_b)
</>
[1,2,3,4,5,6]

 

(2) 반복(*)

list_a = [1,2,3]

print(list_a * 3)
</>
[1,2,3,1,2,3,1,2,3]

 

(3) 길이 len() 함수

  • 괄호 내부에 문자열을 넣으면 문자열의 글자 수(=길이)를 세어줌
  • 리스트 변수를 넣으면 요소의 개수를 세어 줌
list_a = [1,2,3]

print(len(list_a))
</>
3

 


요소 추가 

(1) append() 함수

  • 리스트 에 요소를 추가함
  • 리스트에 요소 하나만 추가
  • 리스트명.appen(요소)
list_a = [1,2,3]

list_a.append(4)
list_a.append(5)
print(list_a)
</>
[1,2,3,4,5]

 

(2) insert() 함수

  • 리스트의 중간에 요소를 추가함
  • 리스트 요소 하나만 추가
  • 리스트명.insert(위치, 요소)
list_a = [1,2,3]

list_a.insert(0, 10)
print(list_a)
</>
[10,1,2,3]

 

(3) extend() 함수

  • 한 번에 여러 요소를 추가할 수 있음
  • 원래 리스트 뒤에 새로운 리스트의 요소를 추가해 줌.
  • 리스트명.extend([리스트])
list_a = [1,2,3]

list_a.extend([4,5,6]
print(list_a)
</>
[1,2,3,4,5,6]

 

⭐️ 리스트 연결 연산자(+)와 요소 추가의 차이

  • 리스트 연결 연산자와 extend() 함수는 비슷한 형태로 동작하지만, 원래 리스트에 영향을 주는지 안주는지가 다름
  • 비파괴적: 리스트 연결 연산자는 원래 리스트에 영향을 주지 않음
  • 파괴적: append(), insert(), extend() 함수는 리스트에 직접적 영향을 주는 함수 또는 연산
  • 자료는 비파괴적으로 사용하는 것이 편리. 원본도 활용, 새로운 결과도 활용할 수 있어 선택지가 넓음. 그러나 용량이 커짐
  • 하나하나 입력해서 원본에 변화가 있는지 없는지 확인해야 함
비파괴적
list_a = [1,2,3]
list_b = [4,5,6]

print(list_a + list_b)
print(list_a)
print(list_b)
</>
[1,2,3,4,5,6]
[1,2,3]
[4,5,6]
파괴적
list_a = [1,2,3]
list_b = [4,5,6]

print(list_a.extend(list_b)) # 실행결과로 아무것도 출력되지 않음
print(list_a) # list_a 자체에 직접적 변화가 있음
print(list_b)
</>
None
[1,2,3,4,5,6]
[4,5,6]

 


요소 제거

  • 인덱스로 제거하기 : del, pop()  ex) 리스트의 1번째 요소를 제거해주세요, 3번째 요소 제거해주세요 ... 
  • 값으로 제거하기 : remove() ex) 리스트 내부에 있는 2를 제거해주세요 ... 
  • 모두 제거하기 : clear

 

(1) del 키워드 - 파괴적

  • 리스트의 특정 인덱스에 있는 요소를 제거함
  • del 리스트명[인덱스]
list_a = [0, 1, 2, 3, 4, 5]

del list_a[1]
print(list_a)
</>
[0, 2, 3, 4, 5]

 

  • 범위를 지정해 리스트의 요소를 한꺼번에 제거할 수 있음
list_a = [0, 1, 2, 3, 4, 5, 6]

del list_a[3:6]
print(list_a)
</>
[0, 1, 2, 6]

 

  • 범위의 한쪽을 입력하지 않으면 지정한 위치를 기준으로 한쪽을 전부 제거해 버릴 수 있음
  • [:3]을 지정하면 3을 기준(3번째 불포함)으로 왼쪽 모두 제거
list_a = [0, 1, 2, 3, 4, 5, 6]

del list_a[:3]
print(list_a)
</>
[3, 4, 5, 6]

 

 

  • [3:]을 지정하면 3을 기준(3번째 포함)으로 오른쪽을 모두 제거
list_a = [0, 1, 2, 3, 4, 5, 6]

del list_a[3:]
print(list_a)
</>
[0, 1, 2]

 

(2) pop() 함수 - 파괴적

  • 제거할 위치에 있는 요소 제거함
  • 매개변수를 입력하지 않으면 마지막 요소를 제거함. pop() 이면 자동으로 -1이 들어가는 것으로 취급하여 마지막 요소 제거
  • 리스트명.pop(인덱스)
list_a = [0, 1, 2, 3, 4, 5]

list_a.pop(2)
print(list_a)
</>
[0, 1, 3, 4, 5]

 

(3) remove() 함수 - 파괴적

  • '리스트 내부에 있는 2를 제거해주세요'와 같이 값을 지정해서 제거하는 것
  • 그러나 함수에 지정한 값이 리스트 내부에 여러개 있어도 가장 먼저 발견되는 하나만 제거함
  • 앞쪽에 있는 2만 제거된 것 (여러 개의 값을 모두 제거하려면 반복문과 조합해야함)
  • 리스트.remove(값)
list_c = [1, 2, 1, 2] #리스트 선언하기

list_c.remove(2)      #리스트의 요소를 값으로 제거하기
print(list_c)
</>
[1, 1, 2]

 

(4) clear() 함수 - 파괴적

  • 리스트 내부의 요소를 모두 제거할 때 사용
  • 리스트.clear()
  • 프로그래밍 언어에서는 내부에 있는 모든 것을 제거할 때 항상 clear라는 이름을 사용. 
  • 리스트 뿐만 아니라 딕셔너리, 웹 개발, 인공지능 개발 등에도 많이 사용
list_d = [0, 1, 2, 3, 4, 5]

list_d.clear()
print(list_d)
</>
[] # 요소가 모두 제거됨

 


리스트 내부 확인

(1) in 연산자

  • 특정 값이 리스트 내부에 있는지 확인
  • 리스트 내부에 값이 있으면 True, 없으면 False 출력
  • 값 in 리스트
list_a = [273, 32, 103, 57, 52]

print(273 in list_a)
print(99 in list_a)
print(100 in list_a)
print(52 in list_a)
</>
True
False
False
True

 

(2) not in 연산자

  • not in 연산자는 리스트 내부에 해당 값이 없는지 확인하는 연산자
  • 값 not in 리스트
  • in 연산자와 반대로 동작함
list_a = [273, 32, 103, 57, 52]

print(273 not in list_a)
print(99 not in list_a)
print(100 not in list_a)
print(52 not in list_a)
print(not 273 in list_a)
</>
False
True
True
False
False
반응형

'Language > PYTHON' 카테고리의 다른 글

for 반복문  (0) 2021.06.20
딕셔너리  (0) 2021.06.20
리스트 (1) 리스트 / 요소 / IndexError 예외  (0) 2021.06.16
조건문 : if ~ else 구문 / elif 구문  (0) 2021.06.10
조건문 : If 조건문  (0) 2021.06.10
댓글