Del Statement

a = [1,2,3,4,5]
del a[0]
print(a)
>>> [2, 3, 4, 5]
# del statement를 사용하면 리스트 내의 원소를 없앨 수 있다.
# list.remove(element)는 list내의 arg로 받은 element와 같은 값인 가장 맨 앞의 원소를 지운다.
# del은 위치를 지정하여 지울 수 있다.

a = [1,2,3,4,5]
del a[2:4]
print(a)
>>> [1, 2, 5]
# del a[start:end]는 start + 1 번 원소부터 end 번 원소까지 없앤다.

a = [1,2,3,4,5]
del a[:]
print(a)
>>> []
# 전체 범위를 지정하면 빈 리스트가 된다.

del a
print(a)
>>> Error
# 리스트 자체를 제거할 수도 있다.

 Del statement는 리스트의 원소를 index를 지정하여 제거할 수 있다.

 

 

 

 

Sequence

string = 'Artyrie'
print(string[0])
>>> A
# string 자료형에서 인덱스로 각 알파벳을 부를 수 있는 것은 sequnce 자료형이기 때문이다.

 ----------------------

list = ['Artyrie', 'Python', 'Note']
print(list[0])
>>> Artyrie

 ----------------------

tuple = ('Artyrie', 'Python', 'Note')
print(tuple[0])
>>> Artyrie

 Sequence 는 여러 객체(데이터)를 가지는 자료형으로, 각 객체(데이터)의 순서를 가지고 있다는 것이 특징이다.

Sequence에는 String, List, Tuple이 있다.

string = 'Artyrie'

list = ['Artyrie', 'Python', 'Note']

tuple = ('Artyrie', 'Python', 'Note')

해당 자료형들은 string에서 설명한 특징들 ( +* 연산, slice (s[ : ]), len()함수 등) 을 지니고 있다.

 

 

 

 

 

Tuple

a = (1,2,3,4,5)
print(a)
>>> (1, 2, 3, 4, 5)
# 튜플은 소괄호인 '(' ')'로 정의한다.

a = (1)
print(a)
>>> 1
# 튜플을 정의할 때 1개의 원소만 넣을 경우에는 a = (1)처럼 정의할 경우,
# 사칙연산의 우선순위를 나타내는 소괄호로 인식하여 1로 출력된다.

a = (1,)
print(a)
>>> (1,)
# 따라서 원소를 하나만 갖는 경우에는 쉼표를 뒤에 붙여주어야한다.

a = 1,2,3,4,5
print(a)
>>> (1, 2, 3, 4, 5)
# 튜플을 정의할 때, 소괄호가 없더라도 똑같이 적용된다.

 ----------------------
 
a = 1,2,3,4,5
a[0] = 5
>>> Error
# 튜플의 데이터는 변경할 수 없다.

 ----------------------
 
a = 1,2,3,4,5
del a[0]
>>> Error
# 튜플은 데이터를 변경할 수 없기에 제거또한 불가능하다.

a = 1,2,3,4,5
del a
print(a)
>>> Error
# del을 이용한 전체 제거는 가능하다.
# a 라는 변수 자체를 제거했기 때문에, 출력이 안된다.

 ----------------------
 
a = 1,2,3,4,5
print(a[2:4])
>>> (3, 4)
# 리스트와 마찬가지로 데이터 일부만을 호출하는 것은 가능하다.

print(a)
>>> (1, 2, 3, 4, 5)
# 그러나 내부 데이터가 변경되는 것은 아니다.

 ----------------------

Tuple은 list와 비슷하게 생긴 자료형으로, 사용법또한 비슷하다고 볼 수 있지만

가장 큰 차이점은 값을 변화시킬 수 있는지에 대한 여부이다.

위의 예처럼 튜플은 내부의 값을 변경할 수 없다.

튜플또한 리스트처럼

슬라이스 (t[start:end]), 덧셈 곱하기 연산, len() 함수 등을 이용할 수 있다.

 

 

 

Set

s = set([1,2,3])
print(s)
>>> {1, 2, 3}
# 집합 자료형은 set 키워드를 통해 만들 수 있다.

s = set('Artyrie')
>>> {'i', 'r', 't', 'A', 'y', 'e'}
# 스트링을 넣으면 자동으로 각 알파벳 별로 나뉘어 저장된다.
# 집합 자료형은 중복을 허용하지 않고 순서가 없기 때문에,
# 뒤죽박죽 섞인 것처럼 보이기도 한다.
# 매번 눈에 보이는 순서는 바뀐다.

! 숫자(int형 데이터)는 set에 바로 넣을 수 없다.

 ----------------------
 
s = set('Artyrie')
print(s[0])
>>> Error
# 집합에는 순서가 없기때문에 인덱싱으로 접근할 수 없다.

l = list(s)
l[0]
>>> r
# 집합에서 인덱싱을 통하여 저장된 값에 접근하려는 경우, 리스트나 튜플로 변환한 후 해야 한다.
 
 ----------------------

s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])
print(s1 & s2)
>>> {4, 5, 6}
# '&' 연산은 교집합으로, 집합의 교집합을 간단히 구할 수 있다.
# s1.intersection(s2) 와 같은 결과이다.

 ----------------------
 
s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])
print(s1 | s2)
>>> {1, 2, 3, 4, 5, 6, 7, 8, 9}
# '|' 연산은 합집합으로, 집합의 합집합을 간단히 구할 수 있다.
# s1.union(s2)와 같은 결과이다.

 ----------------------
 
s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])
print(s1 - s2)
>>> {1, 2, 3}
# '-' 연산은 차집합으로, 집합의 차집합을 간단히 구할 수 있다.
# s1.difference(s2) 와 같은 결과이다.

  set은 말그대로 집합으로, 집합연산인 합집합, 교집합, 차집합 등을 수행할 수 있다.

 

 

Set의 메소드

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])

print(s1.intersection(s2))
>>> {4, 5, 6}
# s1과 s2의 교집합을 구한다.

print(s1.union(s2))
>>> {1, 2, 3, 4, 5, 6, 7, 8, 9}
# s1과 s2의 합집합을 구한다.

print(s1.difference(s2))
>>> {1, 2, 3}
# s1과 s2의 차집합을 구한다.

 ----------------------
 
s1 = set([1, 2, 3])
s1.update([4, 5, 6])
print(s1)
>>> {1, 2, 3, 4, 5, 6}
# 집합은 update 메소드를 이용하여 값을 추가할 수 있다.
# set.update(arg) 는 arg를 set에 원소로 추가하는 것이다.
# extend의 개념이 적용된다.

 ----------------------
 
s1 = set([1, 2, 3])
s1.remove(3)
print(s1)
>>> {1, 2}
# 집합은 remove 메소드를 이용하여 특정한 값을 제거할 수 있다.
# set.remove(arg) 는 arg를 set에서 찾아 제거하는 것이다.

 

 

 

Set 메소드 정리

메소드 의미
set1.intersection(set2) set1과 set2의 교집합을 구한다. # set1 & set2
set1.union(set2) set1과 set2의 합집합을 구한다. # set1 | set2
set1.difference(set2) set1과 set2의 차집합을 구한다. # set1 - set2
set.update(arg) set에 arg로 받은 원소들을 추가한다.
set.remove(arg) set에서 arg인 값을 찾아 제거한다.

 

 

 

 

Dictionaries

dic = {}
# dictionary 자료형으로 dic을 선언한다.

dic = dict()
# dictionary 자료형으로 dic을 선언한다.

----------------------

dic = {'key1': 'str', 'key2': 1}
dic['key3'] = True
print(dic)
>>> {'key1': 'str', 'key2': 1, 'key3': True}
# Dictionary는 key와 value 값을 1:1 매칭하여 저장하는 자료형이다.
# 위와 같이 value의 자료형 제한은 없다.

 ----------------------
 
dic = {'a' : 1, 'b' : 2}
print(dic[0])
>>> Error
# Dictionary는 순서 즉, index가 없으므로 index로 접근이 불가능하다.

print(dic['a'])
>>> 1
# 따라서 key값을 통하여 값에 접근해야 한다.

 ----------------------
 
dic = {'a' : 1, 'b' : 2}
dic['a'] = 3
print(dic)
>>> {'a': 3, 'b': 2}
# key값을 통하여 value값을 변경할 수 있다.

 ----------------------
 
dic = {'a' : 1, 'b' : 2}
del dic['a']
print(dic)
>>> {'b': 2}
# dictionary 자료형의 값은 del statement를 이용하여 제거해야한다.

Dictionary 자료형은 이름에 걸맞게 사전처럼 단어를 찾아 그 뜻을 확인하는 구조를 지녔다.

index를 숫자가 아닌 어떠한 값을 Key로써 지정하고 그 key에 값을 저장한다.

그래서 dic = { 'key' : value } 의 구조를 지닌다.

여기에는 각각의 다른 값이 들어갈 수 있다.

 

 

 

 

Dictionary와 관련된 함수

dic = {'a' : 1, 'b' : 2}
dic = list(dic)
print(dic)
>>> ['a', 'b']
# list 함수를 이용하면 dictionary 자료형을 list로 바로 변환할 수 있다.
# 값은 key값만 저장이 된다.

 ----------------------

dic = {'b' : 1, 'a' : 2}
>>> {'b': 1, 'a': 2}

dic = sorted(dic)
print(dic)
>>> ['a', 'b']
# sorted 함수를 사용하면 dic의 key값을 정렬한 list를 반환해준다.

 ----------------------
 
dic = dict([('a', 1), ('b', 2)])
print(dic)
>>> {'a': 1, 'b': 2}
# dict 함수를 이용하면 바로 키와 값을 할당하며 선언할 수 있다.

dic = dict(a=1, b=2)
print(dic)
>>> {'a': 1, 'b': 2}
# 동일한 방법이다.

 

 

 

 

Dictionary 관련 함수 정리

함수 의미
list(dic) dic에서 key 값으로 구성된 list를 반환한다.
sorted(dic) dic에서 key 값을 정렬하여 list로 반환한다.
dict(arg) arg를 dictionary 자료형으로 만들어 반환한다.

 

 

 

 

Dictionary의 메소드

dic = {'a': [1, 2, 3], 'b': 2}
dic2 = dic.copy()
print(dic2)
>>> {'a': [1, 2, 3], 'b': 2}
# dic2에 dic이 복사되었다.

dic2['c'] = 3
print(dic2)
>>> {'a': [1, 2, 3], 'b': 2, 'c': 3}

print(dic)
>>> {'a': [1, 2, 3], 'b': 2}
# dic2의 변화는 dic과 무관한 듯 보인다.

dic2['a'].append(4)
print(dic)
>>> {'a': [1, 2, 3, 4], 'b': 2}

print(dic2)
>>> {'a': [1, 2, 3, 4], 'b': 2, 'c': 3}
# 그러나 dic2에 있는 a의 value값인 list 자료형을 수정하니 dic의 값또한 수정이 된다.

	-- PLUS --
	dic = {'a': [1, 2, 3], 'b': 2}
	dic2 = dict(dic)
    
	dic2['a'].append(4)
	print(dic)
    >>> {'a': [1, 2, 3, 4], 'b': 2}
    
	print(dic2)
    >>> {'a': [1, 2, 3, 4], 'b': 2}
    # dict()로 새로 선언을 한다고 한들 동일하게 변한다.
    
 ----------------------
 
import copy
# copy 라는 모듈을 사용한다고 선언한다.

dic = {'a': [1, 2, 3], 'b': 2}
dic2 = copy.deepcopy(dic)
# copy 모듈 안의 deepcopy 메소드를 통해 dic을 복사한다.

dic2['a'].append(4)
print(dic)
>>> {'a': [1, 2, 3], 'b': 2}

print(dic2)
>>> {'a': [1, 2, 3, 4], 'b': 2}
# deepcopy를 통해 dictionary를 복사한 결과, 내부 리스트를 수정해도 같이 변화하지 않는다.
# 즉, dictionary의 copy 메소드는 value값이 list 같은 자료형일 경우 메모리값을 복사한다.
# 그러므로 dic의 a값의 value 와 b값의 value는 같은 변수를 가르킬 것이다.

 ----------------------
 
dic = {'a': 1, 'b': 2, 'c': 3}
dic.update({'b': 4, 'a': 2})
print(dic)
>>> {'a': 2, 'b': 4, 'c': 3}
# dic의 update 메소드를 통해 여러 값을 한번에 수정할 수 있다.

 

 

 

 

Dictionary 메소드 정리

메소드 의미
dic.copy() dic을 복사하여 반환한다.
dic.update(dic2) dic2값을 dic에 업데이트한다. #key가 없으면 추가한다.

dic 안의 list형 value가 존재한다면, copy 모듈을 import 하여

copy.deepcopy(dic) 을 통하여 반환값 안의 list와 피복사 값 안의 list가

각각의 다른 주소값을 가진 list로 dic을 복사할 수 있다.

 

 

 

! 주의

해당 내용은 개인 정리를 위하여 작성한 내용으로, 틀린 내용이 존재할 수 있습니다.

잘못된 정보의 경우 댓글로 알려주시면 감사하겠습니다.

'컴퓨터 > Python' 카테고리의 다른 글

# 11 : Python의 패키지  (0) 2020.01.13
#10 : Python의 모듈  (0) 2020.01.13
#08 : Python 리스트를 이용한 행렬  (0) 2019.12.27
#07 : Python의 함수  (0) 2019.12.24
#06 : Python의 반복문  (0) 2019.12.24

+ Recent posts