본문 바로가기
python

[python]파이썬 - 컬렉션 자료 함수와 메소드

by skysline 2023. 1. 24.
반응형

함수와 메소드

  • 함수
    • 코드의 반복을 줄이거나 어떠한 기능을 하기 위해 특정 코드를 모아둔것
      f(x)=2x
  • 메소드
    • 객체(값)에 소속되어 있는 함수
 
 
 
s = "ABCD"
len(s) # 시퀀스 자료형의 길이를 반환하는 함수 
 
4
 
 
 
s.lower() # 문자열 객체의 lower 메소드(모든 대문자를 소문자로 변경)
 
 
 

컬렉션 자료형(Collection data type)

  • 어려가지 요소를 하나로 묶어서 담을 수 있는 데이터 타입
    • 문법적인 요소들 빼고 다 담은 수 있다.
    • 객체 , 변수 , 함수 , 클래스....등 담을 수 있다.
    • list, set, dict , tuple
 

자료형의 특징

  • Sequence 자료형
    • 열거 되어있다. 연속 되어있다.
    • 순서가 있다. 순번(index)도 있다.
  • mutable 자료형
    • 수정 가능한 객체(값)
    • 컬렉션 자료형: list , set , dict
  • immutable 자료형
    • 수정 불가능한 객체
    • int, float, str, bool, tuple(컬렉션 타입)
 

list

  • Sequence 자료형
  • mutable 자료형
    • 변경 가능
  • 중복 데이터 저장이 가능
  • [] 를 이용해서 만들 수 있다.
 

 

lst = []
lst
 
[]
 
 
 
lst = [1,2,3,3,"four" ,None , 7.0 ,True]
lst
 
[1, 2, 3, 3, 'four', None, 7.0, True]
 
 
 
type(lst)
 
list
 
 
 
len(lst)
 
8
 
 
lst = [1,2,3,[1,2]] 
len(lst) # 리스트에 리스트를 넣으면 하나의 요소로 취급된다.
 
4
 
 
lst = [11,200,7,9,10]
sorted(lst) # 시퀀스형 자료형을 오름차순으로 정렬한 값을 반환하는 함수
 
[7, 9, 10, 11, 200]
 
 
 
max(lst) # 시퀀스 자료형의 최대값을 뽑는 함수
 
200
 
 
 
min(lst) # 시퀀스 자료형의 최소값을 뽑는 함수
 
7
 
 
sum(lst)# 시퀀스 자료형의 모든 요소들의 값을 합하는 함수
 
237
 
 
sum(lst) / len(lst) # 평균
 
47.4
 

시퀀스 다루기

  • Sequence는 순번이 있다.
    • 순번을 index 라고 한다.
  • 파이썬의 인덱스는 두종류가 있다.
    • 양수 인덱스
      • 0 부터 시작한다.
      • 왼쪽에서 오른쪽으로 1씩 증가
    • 음수 인덱스
      • -1 부터 시작한다.
      • 오른쪽에서 왼쪽으로 1씩 감소
  • 인덱스는 무조건 정수!!
 
 
lst = [1,2,3,3,"four" ,None , 7.0 ,True]
lst
 
[1, 2, 3, 3, 'four', None, 7.0, True]
 
 
lst[0]
 
1
 
 
 
lst[4]
 
 
 
 
 
lst[-2]
 
7.0
 
 
 
lst[-1]
 
True
 

슬라이싱(Slicing)

  • 인덱스를 사용해서 시퀀스를 잘라낸다.
  • 시퀀스에서 특정 범위를 가리킨다.
  • [start:end:step]
    • start ~ end-1 부분을 step만큼 건너 뛰면서 잘라낸다.
 
 
lst = ["a","b","c","d","e","f","g"]
lst
 
['a', 'b', 'c', 'd', 'e', 'f', 'g']
 
 
lst[0:3]
 
['a', 'b', 'c']
 
 
 
lst[2:4]
 
['c', 'd']
 
 
 
lst[-3:-1]
 
['e', 'f']
 
  • start, end , step 생략이 가능하다.
  • start를 생략하면 자동으로 0 들어간다.
  • end를 생략하면 자동으로 시퀀스의 길이(len)가 들어간다.
 
 
 
lst[:] # lst[0:len(lst)] 와 같음.
 
['a', 'b', 'c', 'd', 'e', 'f', 'g']
 
 
 
lst[] # 대괄호 안에 아무값도 넣지 않으면 문법에러
 
 
 
 
 
lst[:]
 
[10, 20, 30, 40, 50, 60, 70]
 
 
 
lst[3:]
 
[40, 50, 60, 70]
 
 
 
lst[:5]
 
[10, 20, 30, 40, 50]
 
 
 
lst[-5:]
 
[30, 40, 50, 60, 70]
 
 
 
lst[:-1]
 
[10, 20, 30, 40, 50, 60]
 
  • step
    • 지정한 범위에서 step 만큼 건너뛰면서 슬라이싱
    • step을 생략하면 기본적으로 1이 주어진다.
 
 
lst[::]
 
[10, 20, 30, 40, 50, 60, 70]
 
 
 
lst[0:len(lst):1]
 
[10, 20, 30, 40, 50, 60, 70]
 
 
lst[::2]
 
[10, 30, 50, 70]
 
  • step 부분을 양수, 음수를 이용해서 방향 설정 가능
    • 양수: 정방향(왼쪽에서 오른쪽)
    • 음수: 역방향(오른쪽에서 왼쪽)
 

 

 
 
lst
 
[10, 20, 30, 40, 50, 60, 70]
 
 
 
lst[::-2]
 
[70, 50, 30, 10]
 
 
 
lst[::-1]
 
[70, 60, 50, 40, 30, 20, 10]
 
 
 
lst = [10,20,30,40,50,60,70]
lst
 
[10, 20, 30, 40, 50, 60, 70]
 
 
lst[3:4:1]
 
[40]
 
 
 
lst[-1:-5:-1]
 
[70, 60, 50, 40]
 
 
 
lst
 
[10, 20, 30, 40, 50, 60, 70]
 
 
 
lst[-2:-6:-1]
 
[60, 50, 40, 30]
 
 
 
lst[5:1:-1]
 
[60, 50, 40, 30]
 
 
 
num_list = [2,3,4,5,6,7,8,9,10,11,12,13,14,15]
num_list
 
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
 

10보다 작은 3의 배수만 오름차순으로 슬라이싱 하시오

 
 
 
num_list[1:-6:3]
 
[3, 6, 9]
 

리스트는 변경가능하다.

 
 
 
lst = [1,2,3,4,5,6,7,8,9,10]
lst[1] = 10000
lst
 
[1, 10000, 3, 4, 5, 6, 7, 8, 9, 10]
 
 
 
lst[:1]
 
[1]
 
 
 
lst[:1] = 3 # 슬라이싱 해서 리스트가 반환 됐기 때문에 단일값 대입시 에러가 난다.
 
 
 
  • 길이가 달라도 리스트에 리스트를 담는것은 가능하다.
 
 
 
lst[1:] = [3]
 
 
 
lst[1:] = [1001,1002,1003,1004] 
lst
 
[1, 1001, 1002, 1003, 1004]
 
 
 
lst = [1,2,3,4,5,6,7,8,9,10]
lst
 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 
  • step 를 2이상을 넣어 연속적인 공간이 아닌 리스트가 슬라이싱 되면 수정이 안된다.
 
 
 
lst[1::2] = [0] 
 
 
 

list의 메소드

 
  • append()
    • 리스트의 제일 뒤에 값을 추가
 
 
 
lst = [1,2,3,4]
lst.append(0)
lst
 
[1, 2, 3, 4, 0]
 
 
 
sorted(lst) # sorted 함수는 리스트값을 정렬한 객체를 새로 메모리에 만들어 반환한다.
 
[0, 1, 2, 3, 4]
 
 
 
lst
 
[1, 2, 3, 4, 0]
 
 
 
lst.sort() # 리스트는 mutable 하기 때문에 sort 메소드를 이용하면 해당 리스트 객체가 정렬된다.
lst
 
[0, 1, 2, 3, 4]
 

 

  • pop()
    • 제일 뒤에 있는 데이터를 꺼내고 삭제
    • 인덱스 값을 줄경우 해당 인덱스 값을 꺼내고 삭제
 
 
 
lst
 
[0, 1, 2, 3, 4]
 
 
 
print(lst.pop())
print(lst)

print(lst.pop())
print(lst)
 
4
[0, 1, 2, 3]
3
[0, 1, 2]
 
 
 
lst.pop(1)
lst
 
[0, 2]
 
  • extend()
    • 리스트와 리스트를 합친다.
 
 
 
lst = [1,2,3]
lst.extend([4,5,6])
lst
 
[1, 2, 3, 4, 5, 6]
 
 
 
lst = [1,2,3]
lst.append([4,5,6]) # append 는 하나에 요소로서 추가되기때문에 리스트를 넣으면 하나의 요소로 취급된다.
lst
 
[1, 2, 3, [4, 5, 6]]
 
  • insert()
    • 인덱스 위치에 값을 추가한다.
 
 
 
from sys import last_value
lst = [1,2,3]
lst.insert(0,9)
lst
 
[9, 1, 2, 3]
 
  • remove()
    • 리스트에서 값을 찾아 삭제한다.
 
 
 
lst = [10,20,30]
lst.remove(20)
lst
 
[10, 30]
 
  • del
    • del 라는 키워드를 사용하면 된다.
    • 리스트에 경우 특정 인덱스 값을 삭제
 
 
 
lst = [10,20,30]
del lst[1]
lst
 
[10, 30]
 
  • 변수에 경우 변수를 삭제
    • 변수가 참조하고 있는 객체도 같이 메모리에서 삭제된다.
 
 
 
a = 1004
del a
a # 변수를 선언 했지면 del 키워드로 변수를 삭제 했기 때문에 에러 발생
 
 
 

1.다음의 리스트에서 앞에서 부터 하나씩 꺼낸 값을 출력하면서 모든 값을 꺼내시오. (pop 메소드)

 
 
 
lst = [1, 2 ,3, 4 ]
print(lst.pop(0))
print(lst.pop(0))
print(lst.pop(0))
print(lst.pop(0))
 
1
2
3
4
 

2.다음의 리스트에서 2의 배수만 내림차순으로 슬라이싱 하시오

 
 
 
num_list = [2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15]
num_list[-2::-2]
 
[14, 12, 10, 8, 6, 4, 2]
 

3.다음의 리스트에서 sort 메소드와 인덱싱만을 이용하여 최대값과 최소값을 구하시오.

 
 
num_list = [ 6, 7, 8, 9,11,12,13,14,15, 2, 3, 4, 5]
num_list
 
[6, 7, 8, 9, 11, 12, 13, 14, 15, 2, 3, 4, 5]
 
 
num_list.sort()
num_list

[2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15]
 
 
num_list[0] , num_list[-1]
(2, 15)
 
 
w1, w2 = input().split("")
s = w1 + w2
print(s)

hello,,python
hellopython
반응형

댓글