Python

[2025.02.25] 리스트 자료형

polibo 2025. 2. 25. 19:08
  • 저번 시간에는 자료형에 대해서 간단하게 배우고 넘어감. 
  • 오늘 자료형에 대해서 자세하게 배움.

 

  • 리스트는 어떤 자료형이든 다 담을 수 있음.
  • 리스트도 연산 가능
# 리스트는 모든 자료형을 담을 수 있음.
l = [1, "문자", [], ("튜플", ), {1, 2}, {1: "딕션"}, None, True]
print(l)

 

 

 

[리스트 연산하기]

  • 리스트 더하기(+)와 곱하기(*)가 가능함.
# 리스트 더하기(+)
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)
a = ["a", "b", "c", 1]
b = ["d", "e", "f", 2]
print(a + b)

 

 

# 리스트 반복하기(*)
a = [1, 2, 3]
print(a * 5)
a = ["a", "b", "c", 1]
b = ["d", "e", "f", 2]
print(a * 4)
print((a+b)*3)

 

 

 

  • 리스트 길이 구하기
  • 가변적인 리스트에 대해 다음과 같이 코드를 작성하여 리스트 길이 따라 적용되는 코드 작성 가능
  • len()을 사용하여 코드를 작성하면 아래처럼 범위가 벗어났다는 오류를 피할 수 있음.
# 리스트 길이 구하기
l_ = [1, 2, 3, 4, 5, 6]
print(len(l_))
# 상황에 맞게 리스트 길이를 불러와서 계산할 수 있음.
for i in range(len(l_)):
    print(l_[i])
    
# 리스트 길이가 7보다 작음 => list index out of range 오류 발생 (범위를 벗어남)
l_ = [1, 2, 3, 4, 5, 6]
for i in range(7):
    print(l_[i])

 

 

 

  • list는 iterative한 객체이기 때문에 for문에서 다음과 같이 사용될 수 있음.
# 직접적으로 이렇게 사용할 수 있음.
# iterative한 객체이기 때문에 가능함.
l_ = [1, 2, 3, 4, 5, 6]
for i in l_:
    print(i)

 

 

 

[리스트의 수정과 삭제]

  • 삭제는 다루지 않음.
  • 수정하기 원하는 리스트의 요소 자리의 값을 새로운 값으로 수정할 수 있음.
  • l_ 라는 리스트는 원래 1에서 6까지의 정수로 이루어져 있었음.
  • 이를 3을 "Polibo" 문자열로, 6을 8282 숫자로 수정함.
# 리스트의 값 수정하기
l_ = [1, 2, 3, 4, 5, 6]
l_[2] = "Polibo"
l_[5] = 8282
print(l_)

 

 

 

  • 리스트에 문자도 수정이 가능함. 하지만, 그냥 문자는 수정을 하기 위해서 replace 함수를 사용해야 함.
l_ = [1, 2, 3, 4, 5, 6]
l_ = ["H", "e", "l", "l", "o"]
l_[4] = "e"
print(l_)

l_ = "Hello"
print(l_)
l_[4] = "e"
l_ = l_.replace("o", "e")
print(l_)

 

 

 

[리스트 관련 함수]

  • append : 리스트에 요소 추가하기
  • 자기 자신이 바뀌는 함수
  • 문자, 숫자 둘 다 가능
  • 문자, 리스트도 추가할 수 있음.
print("----------append----------")
a = [1, 2, 3]
print(a)
a.append([200, 300])
print(a)
a.append("a")
print(a)

 

 

  • sort : 리스트 정렬
  • 자기 자신이 바뀌는 함수
  • 문자, 숫자 둘 다가능
print("----------sort 오름차순----------")
a = [38, 13, 22, 3, 59]
a.sort()
print(a)
b = ["peach", "banana", "apple", "watermelon", "carrot"]
b.sort()
print(b)

print("----------sort 내림차순----------")
a = [38, 13, 22, 3, 59]
a.sort()
a.reverse()
print(a)
a = [38, 13, 22, 3, 59]
a.sort(reverse=True)
print(a)

 

 

  • reverse : 리스트 뒤집기
  • 정렬 후 역순이 아니라, 리스트 자체의 순서만 역순으로 뒤집어줌.
  • 자기 자신이 바뀌는 함수
  • 문자, 숫자 둘 다 가능
print("----------reverse----------")
a = [38, 13, 22, 3, 59]
a.reverse()
print(a)
b = ["peach", "banana", "apple", "watermelon", "carrot"]
b.reverse()
print(b)

 

 

 

  • index : 인덱스 반환
  • 반환값이 따로 저장되는 함수
  • 문자, 숫자 둘 다 가능
  • 22라는 숫자의 위치 = b = 2
  • "banana"라는 문자열의 위치 = b = 1
print("----------index----------")
a = [38, 13, 22, 3, 59]
b = a.index(22)
print(b)
a = ["peach", "banana", "apple", "watermelon", "carrot"]
b = a.index("banana")
print(b)

 

 

 

  • insert : 리스트에 요소 삽입
  • 자기 자신이 바뀌는 함수
  • 문자, 숫자 둘 다 가능
  • insert(a, b) : a번째 위치에 b 삽입
  • 6번째 자리에 444 삽입 / 첫번째 자리에 "onion" 삽입
print("----------insert----------")
a = [38, 13, 22, 3, 59]
a.insert(5, 444)
print(a)
b = ["peach", "banana", "apple", "watermelon", "carrot"]
b.insert(0, "onion")
print(b)

 

 

 

  • remove(x) : 첫 번째로 나오는 x 제거
  • 자기 자신이 바뀌는 함수
  • 문자, 숫자 둘 다 가능
  • 중복된 수가 있어도 처음 나온 거만 제거
  • 처음 나온 13만 제거됨 / "apple" 제거
print("----------remove----------")
a = [38, 13, 22, 3, 59, 13]
a.remove(13)
print(a)
b = ["peach", "banana", "apple", "watermelon", "carrot"]
b.remove("apple")
print(b)

 

 

 

  • pop : 리스트 요소 끄집어 내기
  • pop() :  괄호안에 아무것도 적지 않으면 default 값으로 맨 마지막 요소 리턴하고, 그 요소 삭제
  • pop(x) : x번째 요소 리턴 후, 그 요소 삭제
  • 자기 자신이 바뀌는 함수
  • 삭제된 요소는 따로 저장됨
  • 문자, 숫자 둘 다 가능
  • a의 마지막 요소인 59 제거됨 / 제거된 값은 b에 따로 저장
  • c의 마지막 요소인 "carrot" 제거됨 / 제거된 값은 d에 따로 저장
print("----------pop----------")
a = [38, 13, 22, 3, 59]
b = a.pop()
print(a)
print(b)
c = ["peach", "banana", "apple", "watermelon", "carrot"]
d = c.pop()
print(c)
print(d)

 

 

 

  • count : 리스트에 포함된 요소 x의 개수 세기
  • 자기 자신이 변하지 않는 함수, 값을 따로 저장해야 함.
  • 문자, 숫자 둘 다 가능
print("----------count----------")
a = [38, 13, 22, 3, 59, 13]
b = a.count(13)
print(b)
c = ["peach", "banana", "apple", "watermelon", "carrot"]
d = c.count("apple")
print(d)

 

 

 

  • extend : 리스트 확장
  • 자기 자신이 바뀌는 함수
  • append v.s. extend : extend는 하나하나씩 확장됨
  • append 함수로 [1, 2]를 추가하면 리스트 마지막에 리스트가 추가되지만, extend 함수를 사용하면 리스트가 확장되어 하나 하나씩 들어가는 것을 볼 수 있음.
print("----------extend----------")
a = [38, 13, 22, 3, 59]
a.extend([123, 456])
print(a)
b = ["peach", "banana", "apple", "watermelon", "carrot"]
b.extend("cherry")
print(b)

print("----------append v.s. extend----------")
a = [1, 2, 3]
a.append([1, 2])
print(a)
b = [1, 2, 3]
b.extend([1, 2])
print(b)