리스트(list)

BANG·2020년 11월 24일
0

Python 기본

목록 보기
5/15

리스트

  • 순서를 가지는 객체의 집합
  • 대괄호()로 감싸 주고 각 요소값은 쉼표(,)로 구분
  • 리스트 안에는 어떠한 자료형도 포함시킬 수 있음

변수를 만드는 여러 가지 방법

[a,b] = ['python', 'life']

print(a)
print(b)

다양한 자료형을 함께 사용 가능

mix_list = ["유재석", 20, True, 3.1]
print(mix_list)

# 리스트 2개를 1개로 확장(합치기)
num_list = [5, 2, 3, 1, 4]
mix_list = ["유재석", 20, True, 3.1]

num_list.extend(mix_list)
print(num_list)

리스트의 인덱싱

a = [1, 2, 3]
print(a)
print(a[0])
print(a[0] + a[2])

a = [1, 2, 3, ['a', 'b', 'c']]
print(a[-1][0])

a = [1, 2, ['a', 'b', ['Life', 'is']]]
print(a[2][2][0])

리스트의 슬라이싱

a = [1, 2, 3, 4, 5]
print(a[0:2])

a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
print(a[2:5])
print(a[3][:2])

리스트 연산하기

a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)

a = [1, 2, 3]
print(a * 3)

리스트 길이구하기

  • len 함수를 사용
a = [1, 2, 3]
print(len(a))

리스트에서 값 수정, 삭제

  • del 함수는 파이썬이 자체적으로 가지고 있는 삭제 함수
a = [1, 2, 3]
a[2] = 4    # 값 수정
print(a)

a = [1, 2, 3]
del a[1]    # 값 삭제. del a[x]는 x번째 요솟값을 삭제.
print(a)

리스트 관련 함수들

subway1 = 10
subway2 = 20
subway3 = 30

subway = [10, 20, 30]
print(subway)

subway_1 = ["유재석", "조세호", "박명수"]
print(subway_1)

# 조세호는 몇 번째에 있는지 출력
print(subway_1.index("조세호"))

# 맨 뒤에 추가
subway_1.append("하하")
print(subway_1)

# 사이에 추가
subway_1.insert(2, "양세형")    # (들어갈 자리, 추가할 내용)
print(subway_1)

# 뒤에서 부터 빼기
print(subway_1.pop())    # 맨 뒤에 빠지는 내용을 출력
print(subway_1)    # 빠지고 나서 나머지 출력

# 같은 내용의 개수 확인
subway_1.append("유재석")    # 맨 뒤에 추가
print(subway_1.count("유재석"))

# 내용 모두 삭제
subway_1.clear()
print(subway_1)

리스트 정렬(sort, sorted)

  • sort()는 리스트 자체를 내부적으로 정렬
  • sorted()는 리스트의 정렬된 복사본 반환
num_list = [5, 2, 3, 1, 4]
sort_ed = sorted(num_list)
print(sort_ed)
print(num_list)

num_list.sort() # 기본적으로 오름차순 정렬
print(num_list)

리스트 뒤집기(reverse)

  • reverse 함수는 리스트를 역순으로 뒤집어 줌
  • 그저 현재의 리스트를 그대로 거꾸로 뒤집음
a = ['a', 'c', 'b']
a.reverse()
print(a)

위치 반환(index)

  • 리스트에 존재하지 않는 값을 입력하면 값 오류(ValueError)가 발생
a = [1,2,3]
print(a.index(3))

리스트에 요소 삽입(insert)

  • insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수
a = [1,2,3]
a.insert(0, 4)
print(a)

리스트 요소 제거(remove)

  • remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제
a = [1, 2, 3, 1, 2, 3]
a.remove(3)
print(a)

리스트 요소 끄집어내기(pop)

  • 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제
a = [1, 2, 3, 1, 2, 3]
print(a.pop())  # 맨 마지막의 요소가 빠져나옴
print(a)

리스트에 포함된 요소 x의 개수 세기(count)

a = [1, 2, 3, 1, 2, 3]
print(a.count(1))

리스트 확장(extend)

  • extend(x)에서 x에는 리스트만 올 수 있음
  • 원래의 a 리스트에 x 리스트를 더함
a = [1,2,3]
a.extend([4,5])
print(a)

b = [6, 7]
a.extend(b)
print(a)

리스트 복사하기

  • 리스트는 변경이 가능한 자료형
a = [1, 2, 3]
b = a
c = a[:]
d = list(a)

print(id(a))
print(id(b))
print(id(c))
print(id(d))

print(a is b)
print(a is c)
print(a is d)

from copy import copy

a = [1, 2, 3]
b = copy(a)

print(id(a))
print(id(b))

print(a is b)

복사

얕은 복사(shallow copy)

  • 슬라이싱 또한 얕은 복사에 해당
  • mutable객체 안에 mutable객체인 경우 문제가 생김(리스트안에 리스트)
from copy import copy

a = [1, 2, [8, 9]]
b = a.copy()
c = a[:]
d = list(a)

a[2][1] = 10

print(a)
print(b)
print(c)
print(d)

깊은 복사(deepcopy)

  • 깊은 복사는 내부에 객체들까지 모두 새롭게 copy 되는 것
import copy

a = [1, 2, [8, 9]]
b = copy.deepcopy(a)    # 깊은 복사
c = a[:]
d = list(a)

a[2][1] = 10

print(a)
print(b)    # 혼자 원래의 리스트 출력
print(c)
print(d)

여러 시퀀스 순회(zip)

profile
Record Everything!!

0개의 댓글

관련 채용 정보