본문 바로가기

데이터/Python

[파이썬] 리스트

  • 여러 요소를 담을 수 있는 자료형이 필요
    • 리스트, 튜플, 딕셔너리 → 여러 요소를 담을 수 있는 자료형, 각각 다른 특징을 지님
  • 리스트는 아무 데이터나 저장할 수 있다. 숫자형, 문자형 혼합해서 사용가능
  • 순서를 가진다
  • → 인덱싱과 슬라이싱이 가능하다.
  • 가장 많이 사용하는 자료형
  • [ ] 대괄호 사용
  • 리스트 만들어보기
a = []
b = [1, 2, 3]
c = ['Life', 'is', 'too', 'short']
d = [1, 'Life', 2, 'is']

 

  • 리스트도 연산이 가능하다
    •  
  • 리스트 인덱싱과 슬라이싱
    • 리스트 인덱싱
      • 리스트 안의 특정한 값을 뽑아낸다
      a = [1, 2, 3]
      b = ["Life", "is", "too", "short"]
      print(a[0])
      print(a[-1])
      #>>>1
      #3
      • 리스트 안에 리스트를 포함
        • 리스트 안에 리스트 안에 또 리스트가 올 수 있다(삼중리스트)
        a = [1, 2, ['a', 'b', ['life', 'is']]]
        print(a[2][2][0])
        #>>>'life'
        
    • 리스트 슬라이싱
      • 이중 리스트 슬라이싱
      a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
      print(a[:5])
      >>>[1, 2, 3, ['a', 'b', 'c'], 4]
      
      #위 리스트 a 에서 'b', 'c'를 출력 (인덱싱 + 슬라이싱)
      print(a[3][1:])
      >>>'b', 'c'
    • #리스트 0번자리부터 1번자리까지 슬라이싱하기 a = [1, 2, 3, 4, 5] print(a[:2]) #>>>[1, 2]
    • 인덱싱을 사용하여 내용을 수정할 경우
      a = [1, 2, 3]
      a[0] = ['a1', 'b1', 'c1']
      print(a)
      #>>>[['a1', 'b1', 'c1'], 2, 3]
      
    • → 인덱싱은 a[0] 자리에 리스트가 그대로 들어간다.리스트의 수정과 삭제
      • 리스트는 자료들의 집합이기에 인덱싱으로 데이터 수정이 가능 (문자열 인덱싱과의 차이!)
      a = [1, 2, 3]
      a[2] = 4
      print(a)
      #>>>[1, 2, 4]
      
      • 슬라이싱을 사용하여 내용을 수정할 경우→ 커서 1과 2 사이에 들어간다.
      • → 리스트로 삽입되는 것이 아닌 내용이 스며든다.
    • 리스트에서 값 삭제
      • 빈 리스트를 추가하여 제거하는 방법
      • a = [['a1', 'b1', 'c1'], 'a', 'b', 'c', 3] a[1:3] = [] print(a) #>>>[['a1', 'b1', 'c1'], 'c', 3]
      • del 함수를 사용하는 방법
        a = [['a1', 'b1', 'c1'], 'c', 3]
        del a[0]
        print(a)
        >>>['c', 3]
      • → del a[]
  • 리스트 관련 함수들
    • 문자열과 마찬가지로 a.함수명() 형태로 사용
    • 리스트에 요소 추가(append)
      • append 함수는 인자를 하나만 받을 수 있다.
      a = [1, 2, 3]
      a.append(4)
      print(a)
      >>>[1, 2, 3, 4]
      
      #만약
      a = [1, 2, 3]
      print(a.append(4))
      >>>None
      
      #append 함수는 a의 값을 변경시켜주는 함수
      # -> a = a + 4로 추가 시켜주는 작업을 해주는 함수기 때문에
      #추가하는 과정 이후 print로 출력시켜줘야함.
      
      #리스트도 추가 가능
      a = [1, 2, 3, 4]
      a.append([5, 6])
      print(a)
      >>>[1, 2, 3, 4, [5, 6]]
       
    • 리스트 정렬(sort)
      • 오름차순으로 정리해주는 것이다.
      • 정수 자료형과 문자열 자료형이 혼합한 상태에서는 리스트 안에서 정렬이 불가하므로 자료형을 맞춰주어야 한다.
      a = [1, 4, 3, 2]
      a.sort()
      print(a)
      #>>>[1, 2, 3, 4]
      
      #문자열도 가능하다
      a = ['a', 'c', 'b']
      a.sort()
      print(a)
      #>>>['a', 'b', 'c']
      
      #문자열 단어도 가능하다. 숫자가 먼저 나옴
      a = ['abc', '123', 'you need python']
      a.sort()
      print(a)
      #>>>['123', 'abc', 'you need python']
      
      #대문자가 먼저 나온다.
      a = ['abc', '123', 'You need python']
      a.sort()
      print(a)
      #>>>['123', 'You need python', 'abc']
      
       💡 숫자, 대문자, 소문자 순으로 정렬된다.
  •  
  •  
    • 리스트 뒤집기(reverse)
      • 현재 리스트를 역순으로 뒤집어 줌.
      a = ['a', 'c', 'b']
      a.reverse()
      print(a)
      #>>>['b', 'c', 'a']
      
      • 내림차순 정렬하려면 → sort로 오름차순정렬 후 reverse()
    • 리스트 요소 찾기(index)
      • 리스트 자료형에서 find는 지원하지 않는다.
      a = [1, 2, 3]
      print(a.index(3))
      #>>>2
      
      #문자열 index와 같이 없는 값을 찾으면 에러 나옴
      print(a.index(0))
      #>>>ValueError: 0 is not in list
      
    • 리스트에 요소 삽입(insert)
      • insert(a, b) → 리스트의 a 자리에 b를 삽입
      • 리스트도 삽입이 가능하다.
      a = [1, 2, 3]
      a.insert(0, 4) #-> 0번자리에 4를 삽입
      print(a)
      #>>>[4, 1, 2, 3]
      
      #리스트 삽입
      a = [1, 2, 3]
      a.insert(2, ['a', 'b'])
      print(a)
      #>>>[1, 2, ['a', 'b'], 3]
      
    • 리스트 요소 제거(remove)
      • 값 제거 (위치에 따라 제거하는 것이 아님)
      a = [1, 2, 3, 1, 2, 3]
      a.remove(3)
      print(a)
      #>>>[1, 2, 1, 2, 3]
      #첫번째 값 하나만 지워진다.
      
    • 리스트 요소 끄집어내기(pop)
      • 위치에 따른 끄집어내기
      • 지정하지 않으면 마지막 값을 끄집어 낸 뒤 리스트에서 제거된다.
      • 괄호 안에 위치를 지정해주면 해당 위치의 값을 끄집어 낸 뒤 리스트에서 제거
      a = [1, 2, 3]
      a.pop()
      >>>3
      print(a)
      >>>[1, 2]
      
      a = [1, 2, 3]
      a.pop(1)
      >>>2
      print(a)
      >>>[1, 3]
    • 리스트 요소 개수 세기(count)
a = [1, 2, 3, 1]
print(a.count(1))
>>>2

#문자열은 요소 그대로만 찾을 수 있다.
a = ['apple']
print(a.count('a'))
>>>0
  • 리스트 확장(extend)
    • 기존 리스트에 리스트를 더해주는 것 → 괄호 안에 리스트 형태로 와야함
    • 더하기와 가장 유사하다.
    • → insert와 append로 리스트를 추가하면 그 리스트 그래도 추가되기 때문에 차이가 있다.

 

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

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