기초 파이썬_1

우주먼지·2020년 7월 7일
0

인공지능 사관학교

목록 보기
1/15

기초 파이썬

리스트 관련 함수

정렬해주는 함수. 항구적 정렬이므로 다시 변수에 저장해주지 않아도 된다.

a = [3, 4, 1, 5, 2]
a.sort() 

a = [5, 4, 3, 2, 1]
sort(reverse = True)라는 인자를 주면 역정렬을 해준다.

튜플

리스트와 비슷한 면이 많지만 리스트와는 달리 튜플은 그 값을 바꿀수 없다. ()를 사용한다.

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

튜플안에 리스트도 가능하며, 인덱싱은 리스트와 같은 방식으로 진행된다.

a = (1, 2, 3)
b = (4, 5, 6)
a+b

(1, 2, 3, 4, 5, 6)

a = (1, 2, 3)
a[1] = -1
del a[1]

위에 코드는 모두 에러가 난다. del a와 같이 튜플 전제를 삭제는 가능하나, 요소를 삭제나 변경은 불가하다.

딕셔너리

key와 value의 짝으로 이루어져있다.
{}를 사용한다.
key는 인덱스 역할을 한다.
+, * 연산은 불가능하고, sort도 의미가 없다.

b = {'name':'John', 'sex':"male", 'age':'35'}
b['name']
#John
c = {1:'Life',2:'is',3:'short'}
e = {1:b, 2:c}
e[2][3]
# 'short'

딕셔너리의 요소로 딕셔너리를 넣는것이 가능하다. 키의 순서가 없어서 인덱싱, 슬라이싱의 의미가 없다.

a = {}
a{'name'} = 'John' # a.get('name') 
a{'sex'} = 'male'
a{'age'} = 35
a

('name':'John', 'sex':'male', 'age':35} 딕셔너리의 추가하는 방법
get('wage')의 키값이 없으면 None을 리턴하면 오류는 발생하지 않으나, a{'wage'}는 오류가 발생한다.

del a['age']
a

{'name':'John', 'sex':'male'} 요소 삭제 방법

a = {1:a, 2:b, 3:c}
list(a.keys())
# [1, 2, 3]
a.values()
#[a, b, c]
a.items()
#[(1:a),(2:b), (3:c)]
a.dear()
a
#{}

dear는 모든 항목을 지워주는 함수이다. items는 key-values짝 튜플의 리스트로 출력해준다.

###집합(set)
거의 쓸일이 없다. 원소의 중복을 허용하지 않는다. 속함, 안속함의 의미만 있다.

a = set()
b = set([1, 2, 3, 5, 4, 2, 3])
b

{1, 2, 3, 4, 5}로 중복된 값을 제거해준다.

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

s1 & s2 #= s1.intersection(s2)
#{4, 5}

s1 | s2 #s1.union(s2)
#{1, 2, 3, 4, 5, 6, 7, 8}

s1 - s2 #s1.difference(s2)
#{1, 2, 3}

합집합과 교집합, 차집합을 구하는 방법

하나의 값을 추가할때는 add, 여러개의 값을 추가할때는 update(), 제거할떄는 remove()

a = [1, 2, 3, 4, 5]
b = a
id(a), id(b)

a와 b의 아이디는 값다. a와b는 이름만 다를뿐, 같은 리스트이다.

b[0] = -999
b
[-999, 2, 3, 4, 5]
a
[-999, 2, 3, 4, 5]

b에만 값을 추가했으나, a값도 같이 바뀐다. 이러한 상황을 피하기 위해서는 복제시 shallow copy(얉은 복사)를 해야한다.

import copy
a = [1, 2, [3, 4, 5]]
b = copy.copy(a) # = a.copy() =  a[:]
a[0] = 0
a[2][0] = -999
a, b

a = [0, 2, [-999, 4, 5]], b = [1, 2, [-999, 4, 5]]
이와 같이 shallow copy를 해줘야지만 값은 같지만 별개의 객체가 만들어진다. 하지만, 복합객체의 원소는 그대로 공유한다.

조건문(if-else)

1 not in (1,2,3)
# False

1 in [1, 2, 3]
# True

튜플, 리스트, 문자열등에 특정원소가 있는지 확인해주는 방법.

반복문(while, for)

while은 사용할 일이 잘 없다.

profile
안녕하세요 ㅎㅎ

0개의 댓글