[TIL] 자료구조 (1) - List

Hailee·2020년 11월 23일
0

[ TIL ]

목록 보기
17/40
post-thumbnail

여러 변수, 값들을 처리하기 쉽게 해주는 자료구조(data Structures)에 대한 게시글!


List

(1) Store Multiple Values in one Variable using list

List

  • 여러 데이터를 한 곳에 저장할 수 있다
  • 대괄호로 감싸며, 쉼표(,)로 데이터 요소들을 구분한다
sandwich = ["peanut butter", "jelly", "bread"]

(2) Nest one List within Another List

다차원 리스트

  • 리스트 내 또다른 리스트들이 존재하는 것!
[["Bulls", 23], ["White Sox", 45]]

(3) Access List Data with Indexes

Index

  • index(순번)을 통해서 리스트의 데이터에 접근할 수 있다
  • '[0]' 이러한 브라켓 노테이션을 통해 호출 (0 기준으로 인덱스 시작)
    : 문자열에서 개별 스펠링 접근할 때와 비슷한 방식
numbers = [50,60,70];
numbers[0]; // equals 50
data = numbers[1];  // equals 60

(4) Modify List Data With Indexes

수정

  • 리스트는 각각의 인덱스에 해당하는 데이터 수정이 자유롭다.
our_list = [50,40,30];
our_list[0] = 15; # equals [15,40,30]

(5) Access Multi-Dimentional Lists With Indexes

다차원 리스트의 접근

  • 접근하려는 깊이만큼 브라켓 추가
  • 접근하려는 차원의 인덱스들 호출하면 접근 가능하다
any_list = [
  [1,2,3],
  [4,5,6],
  [7,8,9],
  [[10,11,12], 13, 14]
];
any_list[3]; # equals [[10,11,12], 13, 14]
any_list[3][0]; # equals [10,11,12]
any_list[3][0][1]; # equals 11

(6) Manipulate Lists With append( )

append( ) 메서드

  • 리스트에 새로운 값 추가할 경우 사용!
  • 리스트의 가장 에 값을 추가한다
arr = [1,2,3];
arr.append(4); # arr is now [1,2,3,4]

(7) Manipulate Lists With pop ( )

pop( ) 메서드

  • 뒤에서부터 요소 제거
three = [1, 4, 6];
remove_one = three.pop();
print(remove_one); # Returns 6
print(three); # Returns [1, 4]

1. Lists

korea_province1 = "강원도"
korea_province2 = "경기도"
korea_province3 = "경상도"
korea_province4 = "전라도"
korea_province5 = "충청도"


print(f"서울은 {korea_province2}에 둘러쌓여 있습니다") ## => 서울은 경기도에 둘러쌓여 있습니다 

👆🏻 우리나라의 각 지역을 표현하려 할 때, 모든 값을 변수로 나열하면
코드도 길어지고 사용하기에도 불편하다.

이를 위한 자료구조(Data Structure)가 바로 List!

대괄호 [ ] 안에 값들을 나열하며 쉼표 ( , ) 로 구분하고 해당 값들을 element라 부른다

String, 숫자, boolean 등 모든 type의 자료형을 저장할 수 있으며
서로 다른 type을 저장하는 것도 가능하다 👇🏻👇🏻

random_values = [1, "two", True]


값들이 순차적으로 저장되어 순서(ordering)가 존재하며
해당 값의 순서(index)를 통해 읽어들인다.

2. Adding, Changing Elements

list 의 특징은 수정, 추가가 가능하다는 것!

append( )

  • 새로운 element 추가를 위해 사용하는 함수
  • element를 리스트에 덧붙이는 역할!
color_list = ["Red", "Blue", "Green", "Black"]
print(color_list) ## ==> ['Red', 'Blue', 'Green', 'Black']

color_list.append("Yellow")
print(color_list) ## ==> ['Red', 'Blue', 'Green', 'Black', 'Yellow'

작성 순서는 다음과 같다👇🏻👇🏻

list는 데이터를 순차적으로 저장하기 때문에,
element는 추가될 때마다 마지막 element의 다음 칸에 덧붙여지는 것!! 👇🏻👇🏻

+

  • 추가하고자 하는 element가 한개 이상일 경우 사용!
color_list = color_list + ["Light Blue", "Pink"]'

list에서 + 사용해서 element 추가하는 경우
대괄호 [ ]를 사용해서 리스트 형태로 만들어준 뒤 추가해야 한다.

but 이렇게 되면 기존의 list가 수정되는 것이 아닌, 새로운 list가 생성되는 것이므로
합한 값들을 저장하고자 하는 변수에 지정해주어야 한다.
그렇지 않으면 기존 list들은 수정되지 않은 상태로 남아있게 된다

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7]

list1 + list2

print(list1)
> [1, 2, 3, 4]

list1 = list1 + list2

print(list1)
> [1, 2, 3, 4, 5, 6, 7]

insert

  • append, +와는 다르게 원하는 위치에 element 삽입 가능!
  • 추가하고자 하는 element, 그 위치(index) 지정해줘야 한다
cities = [
    "서울특별시",
    "부산광역시",
    "인천광역시",
    "대구광역시",
    "대전광역시",
]
cities.insert(1, "제주특별자치도 제주시")


👆🏻 원하는 위치(index) 를 지정해서 삽입해주면

👆🏻 다음과 같이 원하는 순번에 , 원하는 값을 추가할 수 있다.

Empty List

  • 비어있는 list 생성 후 다음 element를 추가해도 된다
  • 비어있는 [ ] 대괄호로 생성
my_list = [ ]
my_list.append(1)
my_list = my_list + [2, 3]

Updating Elements

  • 기존 element의 index를 통해 element를 선택한 후
    새로운 값을 지정해주면 된다
cities = [
    "서울특별시",
    "부산광역시",
    "인천광역시",
    "대구광역시",
    "대전광역시",
]
cities[2] = "경기도 성남시"


👆🏻 해당 코드를 실행하면 정해진 index의 element 값이 바뀌게 된다.

3. Slicing & Step

Slicing

  • 리스트의 일부분을 따로 복사하는 것
list_name[start : stop]
  1. list 이름이 위치하고
  2. 중괄호 [ 가 열리고
  3. 부분적인 리스트가 시작할 첫번째 요소(포함)의 인덱스 번호가 나오고
  4. : 으로 나눠주고
  5. 부분적인 리스트가 멈추는 요소(비포함)의 인덱스 번호가 나오고
  6. 중괄호 ] 를 닫아줍니다

Step

list_name[start : stop : step]
  • 그 값만큼 건너뛰어 가져오는 기능 (한번에 몇 요소씩 건너뛸것인가?)
  • default 값은 1
sub_bts = bts[1:4:2]


Slicing Tip

Start Index, Stop Index를 빈칸으로 남겨두면 해당 list의 요소부터 끝까지 자를 수 있다.

  • Start Index
bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
sub_bts = bts[:4]
## ==> ['RM', '제이홉', '진', '정국']
  • Stop Index
bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
sub_bts = bts[2:]
## ==> ['진', '정국', '지민', '뷔', '슈가']

Copying ( Not Modifying )

  • slicing은 오리지널 list를 수정하는 것이 아닌, 새로운 list를 만들어 내는 것!
bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
sub_bts = bts[1:4]


print(f"bts = {bts}")
> bts = ['RM', '제이홉', '진', '정국', '지민', '뷔', '슈가']
print(f"sub_bts = {sub_bts}")
> sub_bts = ['제이홉', '진', '정국']

4. Deleting

del

  • del 키워드와 index를 사용하여 원하는 요소를 리스트에서 삭제
  • 요소 삭제 후 파이썬에서 자동으로 index 재정렬 (중간이 비어있지 않도록)
twice = [ "나연",  "사나",  "정연",  "모모",  "미나", "채영",  "다현", "쯔위",  "지효"]
print(twice)
['나연', '사나', '정연', '모모', '미나', '채영', '다현', '쯔위', '지효']
-
del twice[3]
print(twice)
['나연', '사나', '정연', '미나', '채영', '다현', '쯔위', '지효']

del 키워드의 단점은 index를 사용해야 한다는 것!
이와 다른 메서드는 remove가 있다.

remove

  • 리스트의 메서드
  • index사용하지 않고 삭제할 수 있다
twice.remove("모모")

profile
웹 개발 🐷😎👊🏻🔥

0개의 댓글