[python] list, tuple(자료형)

hamingu·2021년 3월 17일
2

1. 리스트(List)

순서가 있는 여러 값을 하나로 나열하여 저장하는 자료형이다.
숫자 1, 2 또는 문자형 "apple", "banana" 값을 저장하려면의 값 1개당 1개의 변수를 계속 만들어줘야 한다.

하지만 때에 따라 1, 2, "apple", "banana"라는 여러 값을 하나로 묶어야 될 때가 있다. 이때 list를 활용하여 값을 하나의 변수로 묶을 수 있다.

간단한 예

list = [1,2,"apple","banana"]

변수 이름 = [요소1,요소2] 방식으로 리스트를 만들 수 있다.

✔ list 인덱스 활용(접근, 검색)

list의 요소는 인덱스를 통해 검색하고 접근할 수 있다.
앞서 리스트는 순서가 있는 여러 값을 하나로 나열하여 저장한다고 했다.

순서가 있으니 인덱스를 활용하여 리스트의 특정 몇 번째 요소를 검색하고 접근할 수 있는 것이다.

fruit = ["apple", "banana", "pear", "grape"]

fruit[1]  
# fruit 리스트의 1 위치의 요소를 호출하면 "banana"가 호출된다
# 참고로 파이썬에선 숫자를 카운트할 때 0부터 카운터한다.

✔ list 인덱스 활용(값 수정)

인덱스를 활용해 리스트의 특정 위치 값을 수정할 수도 있다.

fruit = ["apple", "banana", "pear", "grape"]

fruit[1] = "strawberry"
print(fruit)

# 출력
["apple", "strawberry", "pear", "grape"]

변수[n] = "수정값"
즉 리스트의 n번째 위치 요소를 "수정값"으로 바꾼다는 뜻이다.

✔ list 슬라이싱

리스트의 값을 슬라이싱 즉 잘라서 원하는 값들만 가져올 수 있다.

fruit = ["apple", "banana", "pear", "grape"]
print(fruit[0:2]) # fruit 리스트의 0번째부터 1번째의 전 값까지 가져온다는 슬라이싱 예이다. 슬라이싱에선 마지막에 입력한 숫자의 전 위치까지 가져온다

#출력
["aplle", "banana"] # 0, 1번째 요소가 출력되어 나오는 걸 알 수 있다.

슬라이싱 예

  • [ : 5] = 처음부터 4번째 까지
  • [2 : ] = 2번째부터 끝까지
  • [2 : 4] = 2번째부터 3번째 까지
  • 🚨 마지막 입력한 숫자 그대로의 위치가 아닌 -1한 위치라는 걸 꼭 기억하자

    ✔ list 관련 함수사용

    1) len 함수 사용하여 길이 구하기

    len(list)을 하면 list의 길이 즉 list에 포함된 값의 개수를 반환해준다.

    fruit = ["apple", "banana", "pear", "grape"]
    
    len(fruit)
    4 #fruit 리스트는 4개의 값을 가지고 있으니 4를 반환한다.

    2) del 함수 사용하여 특정 요소 삭제하기

    del(리스트[1])을 하면 해당 리스트의 1번째 위치 값을 삭제한다.

    fruit = ["apple", "banana", "pear", "grape"]
    
    del(fruit[3])
    
    print(fruit)
    ["apple", "banana", "pear"] # fruit 리스트의 3번째 위치 값인 "grape"가 삭제되어 반환된다

    3) append 함수 사용하여 요소 추가하기

    list.append(n)을 하면 리스트의 끝에 n에 해당하는 요소를 추가해준다

    fruit = ["apple", "banana", "pear", "grape"]
    fruit.append("strawberry")
    
    print(fruit)
    ["apple", "banana", "pear", "grape", "strawberry"]
    # 리스트의 맨 끝 위치에 "strawberry" 값이 추가된다.

    4 insert 함수 사용하여 특정 위치에 요소 추가하기함

    list.insert(a, b)을 하면 리스트의 a위치에 b의 값을

    fruit = ["apple", "banana", "pear", "grape"]
    
    fruit.insert(0,"strawberry")
    
    print(fruit)
    ["starwberry", "apple", "banana", "pear", "grape"]
    # 리스트의 0번째 위치에 "strawberry"가 추가된다.

    5) pop 함수 사용하여 마지막 값 반환 후 삭제하기

    list.pop(a)을 하면 리스트의 a위치의 값을 반환해 준 후 삭제한다.

    fruit = ["apple", "banana", "pear", "grape"]
    
    fruit.pop(1)
    "banana" #fruit의 1번째 값인 "banana"를 반환해준다
    
    print(fruit)
    ["apple", "pear", "grape"]
    # 반환된"banana"값이 리스트에서 삭제되어있다.

    6) remove 함수 사용하여 특정 값 삭제하기

    list.remove(a)을 하면 리스트의 a값이 있을경우 삭제한다

    num = [1,2,3,4,5,6]
    num.remove(2)
    
    print(num)
    [1,3,4,5,6] #2가 삭제된다.
  • 삭제하려는 값이 2개인 경우 : 리스트의 제일 앞에 위치한 값이 먼저 삭제된다.
  • 삭제하려는 값이 애초에 없는 경우 : 오류가 발생된다

  • 7) count 함수 사용하여 리스트에 포함된 특정 요소 개수 세기

    list.count(a)을 하면 리스트의 a 요소가 몇개 들어있는지 그 개수를 반환한다.

    num = [1,2,3,4,5,6,1,1,1]
    num.count(1)
        = 5

    8) extend 함수를 활용하여 리스트 확장시키기

    list1.extend(list2)을 하면 list1에 list2를 더하게 된다.

    list1 = [1, 2, 3, 4, 5]
    list2 = ["a", "b", "c", "d"]
    
    list1.extend(list2)
    print(list1)
        
    [1, 2, 3, 4, 5, "a", "b", "c", "d"] # list1에 list2가 더하진다.      

    9) sort, reverse 함수로 리스트 요소 정렬하기

    1) sort() : list.sort()로 사용하며, 리스트 내의 요소가 [가나다],[1,2,3],[a,b,c]등 순서대로 정렬된다.
    2) reverse() : list.reverse()로 사용하며, 리스트 내의 요소가 역순으로 정렬된다




    2. 튜플(tuple)

    여러 값을 하나로 저장하는 점에 대해서는 list와 동일하지만 list와는 몇 가지 차이점이 있다.

    간단한 예

    tuple = (1, 2, 3)

    변수 이름 = (요소1, 요소2, 요소3) 방식으로 튜플을 만들 수 있다.

    ✔ tuple과 list의 공통점

  • 여러 요소를 하나의 변수에 저장할 수 있다.
  • 인덱스를 통해 원하는 요소에 접근할 수 있다
  • 튜플의 요소를 슬라이싱 할 수 있다.
  • 튜플의 길이를 구할 수 있다.
  • ✔ tuple과 list의 차이점

  • 요소의 값을 변경할 수 없는 immutabel이다.
  • 요소의 값을 변경할 수 없기 때문에 insert, append, del 등의 요소를 추가 또는 삭제하는 함수들을 사용할 수 없다.
  • 튜플의 요소를 슬라이싱 할 수 있다.
  • 튜플의 길이를 구할 수 있다.
  • 🔎결론

    리스트와 튜플은 순서가 있는 요소를 하나로 관리할 수 있다는 점에서 많은 유사성을 가지고 있다.

    거의 유일한 차이점이라고는 안의 요소를 변경할 수 있냐 없냐의 차이라고 할 수 있는데 이 차이로 인해 리스트를 활용해야 할지 튜플을 활용해야할지 완벽하게 갈리게 된다고 생각된다.

    간단하게는 특정 데이터를 가져올 때 가져오게 되는 데이터가 몇개인지 알 수 없고 또 변할 수 있는 여지가 있다면 list를 사용하는 것이 좋으며 데이터가 순서, 값 등 절대 변하지 않아야 한다면 tuple을 사용하는 것이 좋을 수 있다 정도로 정리할 수 있을 것 같다.

    profile
    프로그래밍구

    0개의 댓글