본문 바로가기
SK Shieldus Rookies 19th/인프라 활용을 위한 파이썬

[SK shieldus Rookies 19기][Python] - 자료형 2

by En_Geon 2024. 3. 11.

 

1. 리스트(list)

자료형의 집합을 표현할 수 있는 자료형

 

1) 생김새

a = []
b = [1, 2, 3]
C = ['Life', 'is', 'too', 'short']
d = [1, 2, 'Life', 'is']
e = [1, 2, ['Life', 'is']]

 

  • a = 빈 리스트
  • b = 숫자가 들어 있는 리스트
  • c = 문자열이 들어 있는 리스트
  • d = 숫자와 문자열이 들어 있는 리스트
  • e = 숫자와 문자열 리스트가 들어 있는 리스트

 

2) 인덱싱 

리스트에서도 문자열처럼 인덱싱할 수 있다.

 

a = {1, 2, 3] 

위와 같은 리스트가 있을 때 a[0] = 1이 된다. 인덱스는 0부터 사용한다는 것을 항상 기억해야 한다.

 

a[0] + a[2] = 4   a[0]은 1이고, a[2]는 3이므로 1 + 3이 되어서 4가 된다.

 

a[-1] = 3  "-" 인덱스는 문자열에서와 같이 리스트에서도 마지막 요소부터 시작하는 인덱싱을 한다.

 

a = [1, 2, 3, ['a', 'b', 'c']] 

리스트 안에 있는 리스트는 a[-1][0]으로 인덱싱을 할 수 있다. 앞에 나온 [-1]은 마지막 요소인 리스트 ['a', 'b', 'c']이고, 뒤에 나온 [0]은 마지막 요소인 리스트에서 첫 번째 요소를 리턴한다. 그래서 'a'를 리턴한다.

 

3) 슬라이싱

리스트에서도 문자열처럼 슬라이싱을 할 수 있다.

 

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

 

  • 출력 : [1, 2]

이때 출력된 리스트는 새로운 리스트다. 위 예제에서 봤듯이 문자열에서 했던 갯과 사용법이 완전히 동일하다.

 

(1) 중첩된 리스트에서 슬라이싱

 

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

 

  • 출력 : a[2:5] :  [3, ['a', 'b', 'c'], 4]
  • 출력 : a[3][:2] : ['a', 'b']

a[3]은 ['a', 'b', 'c'] 이다. 따라서 a[3][2]는 a[3]의 첫 번째 요소부터 세 번째 요소 직전까지의 값을 새로운 리스트로 출력해 준다.

 

4) 연산

리스트도 문자열과 같이 +(결합)를 사용해 더할 수 있고, *를 사용해서 반복할 수 있다.

 

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

 

  • 출력 : [1, 2, 3, 4, 5, 6]

 

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

 

  • 출력 : [1, 2, 3, 1, 2, 3]

 

5) 길이

문자열에서 사용한 len() 함수는 리스트, 튜플, 딕셔너리에도 사용할 수 있는 함수다.

 

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

 

  • 출력 : 3

 

6) 수정, 삭제

(1) 수정

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

 

  • 출력 : [1, 2, 4]

a[2]의 요소가 바뀐다. 마치 변수를 재할당하는 것과 비슷하게 리스트 인덱스에 값을 재할당해 주면 수정할 수 있다.

 

(2) 삭제

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

 

  • 출력 : [1, 3]

del 함수는 파이썬이 자체적으로 가지고 있는 삭제 함수이다. 리스트 삭제에는 remove와 pop 함수를 사용할 수 있다.

 

7) 관련 함수

(1) append

append(a)는 리스트에 요소를 추가하는 함수로 a를 리스트의 맨 마지막에 요소를 추가한다. 요소를 추가할 때는 모든 자료형이 들어갈 수 있다. 

 

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

 

  • 출력 : [1, 2, 3, 4]

(2) sort

리스트의 요소를 오름차순으로 정렬한다. 문자 역시 알파벳 순서로 정렬할 수 있다.

 

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

 

  • 출력 : [1, 2, 3, 4]

(3) reverse

reverse 함수는 리스트를 역순으로 뒤집는다. 현재 리스트 자제 그대로 거꾸로 뒤집는다.

 

a = [a, c, b]
a.reverse()
print(a)

 

  • 출력 : ['b', 'c', 'a']

(4) index

index(a) 함수는 리스트 a 값이 있으면 a의 인덱스 값을 리턴 단, 리스트에 a 값이 없으면 오류가 난다.

 

a = ['a', 'c', 'b']
print(a.index('b'))

 

  • 출력 : 2

(5) insert

insert(a, b)는 리스트의 a번째 위치b를 삽입하는 함수

 

a = [1, 2, 3]
a.insert(0, 4)
print(a)

 

  • 출력 : [4, 1, 2, 3]

(6) remove

remove(a)는 리스트에서 첫 번째로 나오는 a를 삭제하는 함수

 

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

 

  • 출력 : [1, 2, 1, 2, 3]

(7) pop

pop()은 리스트의 맨 마지막 요소를 리턴하고 그 요소를 삭제하는 함수
pop(x)는 리스트의 x번째 요소를 리턴하고 그 요소를 삭제하는 함수

 

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

 

  • 출력 : [1, 2]

(8) count

count(x)는 리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 리턴하는 함수

 

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

 

  • 출력 : 2

1이라는 값이 a 리스트에 2개 들어 있어 2를 리턴한다.

 

(9) extend

extend(x)에서 x에는 리스트만 올 수 있고, 원래의 a 리스트에 x 리스트를 더하게(결합) 된다.

 

a = [1, 2, 3]
a.extend([4, 5])
print(a)

 

  • 출력 : [1, 2, 3, 4, 5]

a.extend([4, 5])는 a += [4, 5]와 같다.

 

a = [1, 2, 3]
a.append([4, 5])
print(a)

 

  • 출력 : [1, 2, 3, [4, 5]]

append에 리스트가 들어갔을 때와 차이가 있다. append에 리스트가 들어갔을 때는 리스트 자체를 결합한다.

 

2. 튜플(tuple)

리스트는 [], 튜플은 ()로 묶는다.
리스트는 요솟값의 생성, 삭제, 수정이 가능하지만, 튜플은 요솟값바꿀 수 없다.

 

a = ()
b = (1,)
c = (1, 2, 3)
d = 1, 2, 3
e = ('a', 'b', ('ab', 'cd))

 

  • a = 빈 튜플
  • b = 숫자 1개가 들어있는 튜플, 튜플에 1개의 요소만 가질 때는 요소 뒤에 쉼표를 반드시 붙여야 한다.
  • c = 숫자 요소들을 가진 튜플
  • d = 숫자 요소들을 가진 튜플, 리스트와는 다르게 ()를 생략 가능
  • e = 문자, 문자열, 튜플 요소를 가진 튜플

 

1) 삭제, 수정

튜플은 삭제, 수정을 할 수 없기 때문에 시도하면 오류가 안가. 튜플은 읽는 것만 가능

 

2) 관련 함수

리스트와 안전히 동일 하기 때문에 간단하게 코드만 본다.

 

(1) 인덱싱

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

 

  • 출력 : 1

(2) 슬라이싱

a = (1, 2, 'a', 'b')
print(a[1:])

 

  • 출력 : (2, 'a', 'b')

(3) 더하기

a = (1, 2, 'a', 'b')
b = (3, 4)
c = a + b
print(c)

 

  • 출력 : (1, 2, 'a', 'b', 3, 4)

(4) 곱하기

a = (3, 4)
b = a * 2
print(b)

 

  • 출력 : (3, 4, 3, 4)

(5) 길이

a = (1, 2, 'a', 'b')
print(len(a))

 

  • 출력 : 4

댓글