Coding Diary.

(파이썬) 데이터 구조의 유형 중 가장 많이 쓰이는 리스트(list) 알아보기 본문

Coding/Python

(파이썬) 데이터 구조의 유형 중 가장 많이 쓰이는 리스트(list) 알아보기

life-of-nomad 2024. 6. 5. 10:34
728x90
반응형

1. 데이터 구조

  • 데이터 구조란 다양한 방식으로 데이터 유형들을 모아 조직하고 그룹화하는 데이터 컨테니어 혹은 데이터 컬렉션입니다.
  • 데이터가 담긴 파일들을 정리해 놓은 파일 폴더라고 볼 수 있습니다.

2. 리스트

  • 리스트는 파이썬에서 자주 사용되는 데이터 구조입니다.
  • 대괄호[]를 사용합니다.
  • 리스트에는 모든 데이터 유형을 섞고 매칭시켜 담을 수 있습니다.
list_of_random_things = [1, 3.4, 'a string', True]
  • 이 리스트에는 4개의 요소가 있습니다. 

3. 리스트의 특징

1) 인덱싱

  • 리스트처럼 순서가 있는 모든 컨테이너에는 파이썬에서 인덱스 0부터 인덱싱됩니다.
  • 그러므로 위의 리스트에서 첫 번째 값을 가져오려면 아래와 같이 작성할 수 있습니다.
list_of_random_things[0]
#결과
1
  • 다음 코드를 사용하여 마지막 요소를 가져올 수 있는 것 처럼 보이지만, 그렇지 않습니다.
list_of_random_things[len(list_of_random_things)]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-34-f88b03e5c60e> in <module>()
----> 1 lst[len(lst)]

IndexError: list index out of range
  • 하지만 인덱스를 1만큼 줄이면 마지막 요소를 반환할 수 있습니다.
list_of_random_things[len(list_of_random_things) -1]
#결과로 마지막 요소인 True 출력
True
  • 인덱스가 0부터 시작되기 때문입니다. 
  • 또한, 다른 방법으로 리스트의 끝부분부터 인덱싱 할 수 있습니다. 
  • 이 때 -1은 마지막 요소이고 -2는 마지막 요소로부터 두 번째 요소입니다.
list_of_random_things[-1]
True
list_of_random_things[-2]
a string

 

2) 슬라이싱

  • 리스트 슬라이싱을 사용하면 리스트에서 한꺼번에 여러 값을 가져올 수 있습니다. 
  • 슬라이싱을 사용할 때 왼쪽 숫자의 인덱스는 포함되고 오른쪽 숫자의 인덱스는 제외됩니다.
list_of_random_things = [1, 3.4, 'a string', True]
list_of_random_things[1:2]
[3.4]
  • 따라서 리스트에서 3.4만 리턴됩니다. 여기서 리스트를 리턴합니다.
  • 리스트의 시작 부분부터 시작하려는 경우에는 시작값을 아래와 같이 생략할 수도 있습니다.
list_of_random_things[:2]
[1, 3.4]
  • 또한, 리스트의 끝부분까지 모든 요소를 리턴하는 경우에는 마지막 요소를 생략할 수 있습니다.
list_of_random_things[1:]
[3.4, 'a string', True]
  • 이러한 유형의 인덱싱은 문자열에도 똑같이 적용되고, 문자열인 경우에는 리턴 값이 문자열이 됩니다.
  • 아래 글을 참고하시면 됩니다.

🔻(참고)문자열과 리스트🔻

 

(파이썬) 리스트와 문자열의 공통점과 차이점 요약 정리

지난 글에서 리스트에 대해서 알아보았습니다. 이번 글에서는 리스트와 문자열의 차이점에 대해 알아보겠습니다.리스트와 문자열은 굉장히 비슷합니다. 리스트가 어떤 자료형들의 나열이라면,

life-of-nomad.tistory.com

 

3) in 과 not in

  • 리스트 안에 어떤 요소가 있는지의 여부를 알기 위해, 또는 한 문자열이 다른 문자의 하위 문자열인지를 나타내는 불(bool) 값을 리턴하기 위해 in 과 not in 도 사용할 수 있습니다.
    • in : 리스트 안에 어떤 요소가 있는지 확인
    • not in : 리스트 안에 어떤 요소가 없는지 확인
'this' in 'this is a string'
True
'in' in 'this is a string'
True
'isa' in 'this is a string'
False
5 not in [1, 2, 3, 4, 6]
True
5 in [1, 2, 3, 4, 6]
False

 

🔻(참고)리스트 메소드🔻

 

(파이썬) 리스트와 리스트에서 유용한 메소드 총정리

1. 리스트에서 값의 존재 확인하기어떤 값이 리스트에 있는지 여부를 확인하는 함수를 만들어보겠습니다.# value가 some_list의 요소인지 확인def in_list(some_list, value): i = 0 while i 위와 같이 실행하면

life-of-nomad.tistory.com

 

4) 변경 가능성 (mutability)

  • 변경 가능성이란 객체가 생성된 후에 변경할 수 있는지를 뜻합니다.
  • 어떤 객체를 변경할 수 있다면 그 객체는 mutable 하다고 말합니다.
  • 하지만 어떤 객체가 생성된 후에 변경이 불가능하다면 그 객체는 immutable 하다고 말합니다.
  • 여기서, 리스트와 문자열의 차이점이 생깁니다.
  • 리스트는 변경 가능하고 문자열은 변경가능하지 않습니다. 
my_lst = [1, 2, 3, 4, 5]
my_lst[0] = 'one'

>>> print(my_lst)
['one', 2, 3, 4, 5]
  • 리스트에서는 1을 one으로 대체할 수 있습니다.
  • 하지만 아래의 문자열을 변경하려고 하면 오류가 납니다.
greeting = "Hello there"
greeting[0] = 'M'
  • 생성된 문자열을 변경할 수 없으므로 완전히 새로운 문자열을 만들어야 합니다.
greeting = "Hello there"
greeting = "Mello there"

 

5) 순서 (order)

  • 순서는 객체에 있는 요소의 위치를 사용하여 요소에 액세스할 수 있는지에 대한 것입니다.
  • 문자열과 리스트는 모두 순서가 있으므로 순서를 이용하여 리스트와 문자열의 일부분에 액세스할 수 있습니다.

6) 리스트 안의 리스트 (Nested List)

  • 리스트 안에는 또 다른 리스트가 있을 수 있습니다.
  • 이를 영어로 nested list라고 부릅니다.
# 세 번의 시험을 보는 수업
grades = [[62, 75, 77], [78, 81, 86], [85, 91, 89]]

# 첫 번째 학생의 성적
print(grades[0])

# 세 번째 학생의 성적
print(grades[2])

# 첫 번째 학생의 첫 번째 시험 성적
print(grades[0][0])

# 세 번째 학생의 두 번째 시험 성적
print(grades[2][1])

# 첫 번째 시험의 평균
print((grades[0][0] + grades[1][0] + grades[2][0] / 3)
  • 위와 같이 실행하면 아래와 같은 결과가 나옵니다.
[62, 75, 77]
[85, 91, 89]
62
91
75.0

 

 

728x90
반응형