210520_python 자료형2 list, tuple, range, set

lasso·2021년 5월 20일
0

21KDT-DS/DE

목록 보기
3/3

List (리스트)

리스트의 특징

  • 시퀀스(Sequene) 자료형으로 데이터의 크기나 원소 값을 변경할 수 있다.
  • 리스트는 [  ]대괄호로 표현한다.
  • 값 사이에 콤마(,)를 구분하여 사용한다.
  • 다양한 타입을 함께 포함할 수 있다.
  • 인덱스를 이용해서 리스트의 각 원소에 접근할 수 있다.
  • +, * 연산자를 사용하여 이어붙일 수도 반복할 수도 있다.
    리스트 더하기(+) : 리스트 + 리스트만 사용 가능
    리스트 반복하기 (*) : 리스트 * int 만 사용 가능
  • 리스트에 특정값이 있는지 검사할 수 있다.
  • 리스트의 일부 요소를 변경, 삭제할 수 있다.
# 시작과 끝 인덱스가 다르면 값 변경
>>> list_a = [1, 2, 3, 4]
>>> list_a[0:2]=[100]  #인덱스 0은 100으로 변환, 1은 삭제
[100, 3, 4]

# 시작과 끝 인덱스가 같으면 삽입
>>> list_b = [1, 2, 3, 4]
>>> list_b[1:1] = [100]
[1, 100, 2, 3, 4]
  • 리스트안에 또 다른 리스트를 포함할 수 있다. (중첩리스트)
  • 한 변수에서 데이터를 각각 꺼내 오는 것을 언패킹(unpacking) 지원

리스트의 메소드

리스트 요소 추가

  • append(x) : x를 리스트의 마지막 요소로 추가한다.
  • extend(list) : list의 요소로 원 리스트를 확장한다.
  • insert(i, x) : x를 i번째 위치로 끼워 넣는다.

리스트 요소 삭제

  • remove(x) : x와 같은 첫 번째 요소를 삭제한다.
  • pop( ) : 마지막 요소를 삭제하고 반환한다.
  • pop(i) : i번째 요소를 삭제하고 반환한다.
  • clear( ) : 모든 요소를 삭제한다.

리스트 정렬

  • sort( ) : 오름차순 정렬
  • sort(reverse=True) : 내림차순 정렬
  • reverse( ) : 역순으로 배열 (정렬 X)

그 외

  • index(x) : x와 같은 첫번째 요소의 인덱스를 반환한다.
  • count(x) : x와 같은 요소들의 개수를 구한다.
  • copy( ) : 얕은 복사본을 반환

리스트의 빌트인 함수

  • len(a) : a의 요소의 갯수를 반환
  • max(a) : a의 최댓값을 반환
  • min(a) : a의 최솟값을 반환

Tuple (튜플)

리스트와 튜플의 공통점과 차이점

  • 튜플과 리스트의 공통점
    임의의 객체를 저장할 수 있다는 것과 순서(sequence) 자료형이다.
    튜플과 리스트 모두 이종의 요소를 가질 수 있다.

  • 튜플과 리스트의 차이점
    튜플은 변경 불가능한 순서(sequence) 자료형이다.
    튜플은 함수의 가변 인수를 지원한다.
    튜플의 리터널 표현법은 ()소괄호이다.

튜플의 특징

  • 튜플은 (  )소괄호로 표현한다.
  • 값 사이에 콤마(,)를 구분하여 사용한다.
  • 괄호( )는 수식에서의 ( )와 혼동될 가능성이 있기 때문에 주의해야 한다.
>>> c = (1)
>>> type(c)   # 요소 1개를 튜플로 지정하려 했지만 int로 나옴 이럴땐?
int
c = (1,)  # 요소 뒤에 ,를 쓰면 튜플로 지정 가능!
type(c)
tuple
  • 소괄호를 생략해도 튜플로 인식된다.
>>> a = 1, 2, 3
>>> type(a)
typle

>>> b = 1,
>>> type(b)
typel
  • 튜플에 저장된 값의 순서를 바꿀 수 있다.
>>> a, b = 1, 2
>>> print(a, type(a))
>>> print(b, type(b))
1 <class 'int'>
2 <class 'int'>

>>> c = 3, 4
>>> a, b = c
>>> print(a, type(a))
>>> print(b, type(b))
3 <class 'int'>
4 <class 'int'>
  • 인덱스를 이용해서 튜플의 각 원소에 접근할 수 있다. (int 리턴)
>>> a = 1, 2, 3
>>> a[2]  #인덱스로 가져오면 int 형태로 리턴
3
  • 슬라이싱을 이용해 튜플값으로 리턴할 수 있다.
>>> a = 1, 2,3 
>>> a[2:3]  # 슬라이싱으로 가져오면 튜플의 형태로 리턴
(3,)
  • +, * 연산자를 사용하여 이어붙일 수도 반복할 수도 있다.
  • 튜플에 특정값이 있는지 검사할 수 있다.
  • 튜플은 검색에 관련된 메서드 2개(count, index)를 갖는다.
  • 튜플을 중첩해서 사용할 수 있다.
  • 한 변수에 데이터를 각각 꺼내 오는 것을 언패킹(unpacking)을 지원한다.
>>> a = ((1, 2), (3, 4))
>>> b, c = a
>>> print(b)
>>> print(c)
(1, 2)
(3, 4)

>>> (x, y),(z, k) = a
>>> x, y
(1, 2)
  • 확장된 언패킹을 이용한 자유로운 형태 이용
# a = 1, 나머지 2, 3, 4, 5는 list 형태로 b로 가져옴
>>> a, *b = (1, 2, 3, 4, 5)

>>> print(a, type(a))
>>> print(b, type(b))
1 <class 'int'>
[2, 3, 4, 5] <class 'list'>


# a = 1, 2, 3, 4로 지정하고 5는 b로 가져옴
*a, b = (1, 2, 3, 4, 5)

print(a, type(a))
print(b, type(b))
[1, 2, 3, 4] <class 'list'>
5 <class 'int'>

# *a, *b 사용은 불가함
  • 리스트와 튜플은 list( )와 tuple( )내장함수를 사용하여 상호변환 가능

반드시 튜플을 사용해야 하는 경우

  1. 함수에 있어서 하나 이상의 값을 반환할때
>>> def calc(a, b):
    	return a+b, a * b  # 튜플을 반환한다.
>>> x, y =calc(5, 4)
>>> print(x, y)
9 20
  1. 튜플에 있는 값들을 함수의 인수로 사용할 때
  2. python 2형식의 서식 문자열에 데이터를 공급할 때

집합

집합의 특징

  • set은 집합이다.
  • 집합의 특징은 중복을 허용하지 않고, 순서가 유지되지 않는다.
    (순서는 유지되지 않지만 내부적으로 오름차순으로 정렬 후 리턴함)
# 집합의 중복을 허용하지 않는 특징
>>> a = {1, 2, 3, 3, 3}
>>> a
{1, 2, 3}


# 순서가 유지되지 않는 특징
>>> a = {2, 1, 5, 3, 4}
>>> a
{1, 2, 3, 4, 5}  # 오름차순 리턴
  • set은 이종 데이터를 가질 수 있고(heterogenuous), 순서형이 아니며(non-sequence), 변경가능한(mutable) container이다.
  • 리터널 표기법으로 {} 중괄호를 사용한다.
  • True = 1, False = 0으로 취급된다.
# 이종데이터를 가질 수 있는 특징
>>> a = {'가', 1, True, 0, False, '집합'}  #True = 1, False = 0으로 인식된다. 둘 중 먼저 있는 값이 출력됨
>>> a
{0, 1, '가', '집합'}  # 0, 1이 더 먼저 나옴

a = {'가', True, 1, False, 0, '집합'}  #True = 1, False = 0으로 인식된다. 둘 중 먼저 있는 값이 출력됨
a
{False, True, '가', '집합'}  # T/F가 더 먼저 나옴
  • set은 sequence가 아니므로 index와 slice를 사용할 수 없다.
>>> a[0:1]
TypeError        Traceback (most recent call last)
<ipython-input-174-80d608c6034a> in <module>
      1 # set은 sequence가 아니므로 index와 slice를 사용할 수 없다.
----> 2 a[0:1]

멤버십(원소와 집합사이의 귀속관계)검사, 시퀀스에서의 중복제거와 교집합, 합집합, 차집합 같은 수학연산 수행에 사용된다.

다른 시퀀스(sequence)와 마찬가지로, x in set, len(set), 컴프리헨션과 같은 기능을 제공하지만, 삽입순서를 기록하지는 않는다. 따라서 인덱싱이나 슬라이싱은 사용이 불가능하다.

반복 가능한(Iterable)객체로 부터 집합을 만들 수 있지만 모든 데이터가 원소로 사용 할 수 있는 것은 아니다. 해시가능(Hashable) 이면서 변경 불가능한 자료형만이 집합의 원소로 사용 가능하다.

profile
라쏘, 릿지, 엘라스틱넷 중 라쏘를 담당하고 있습니다.

0개의 댓글