프로그래밍/파이썬🐍

(3)점프투파이썬[2-6 집합자료형:2-8 변수]

개발자 덕구🐾 2022. 1. 8. 06:48
728x90

집합 자료형

 

s1 = set([1,2,3])
print(s1)

-> set의 생성

 

s1 = set('hello')
print(s1)

 

-> 출력이 뭔가 이상하다.

이는 set의 특징에 의해서다. 

 

중복을 허용하지않고, 순서가 없다. 

 

언제 유용하게 사용되는가?

-> 교집합, 합집합, 차집합 

 

교집합 : '&' 기호 또는 intersection함수 

 

합집합 : '|' 기호 (\에서 시프트 키 누름) 또는 union함수

 

차집합 : '-' 기호 사용 또는 difference 함수

 

관련 함수들

 

add() : 1개의 값만을 추가

 

update() : 여러 개의 값을 한꺼번에 추가 

 

remove() :  특정 값 제거 

s1 = set([1,2,3,4])

s1.update([6,5])
print(s1)
s1.remove(2)
print(s1)

 

 

 

2-7 자료형의 참과 거짓

문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어있으면 거짓, 비어있지 않으면 참이다. 

숫자는 값이 0이면 거짓이다. 

[+ None 도 거짓을 의미한다. ]

 

a = [1,2,3,4]

while a:
    print(a.pop())

 

 

 

2-8 자료형의 값을 저장하는 공간, 변수

 

a = 3

 

-> 3이라는 값을 가지는 정수 자료형(객체)이 자동으로 메모리에 생성된다. 

a는 변수의 이름이고, 3이라는 정수형 객체가 저장된 메모리의 위치를 가리킨다. 

 

<파이썬의 모든 자료형은 객체이다. 3 또한 상수가 아닌 객체이다. >

 

동일한 객체를 가리키는 지 판단을 할 때는 is를 사용한다.

< a is b >와 같이! 동일한 객체를 가리키면 True를 아니라면 False를 반환한다. 

 

[튜플을 괄호 '(' , ')'를 생략해도 무방하다. ]

 

 

a = 3
b = 5

a,b = b,a
print(a,b)

 

-> 간단하게 a와 b를 바꿀 수 있다. 

 

> 리스트에서의 복사 

 

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

 

복사이후에 요소값을 변경하였음에도 b 리스트에 변경내용이 저장되어있다. 

이는 a, b가 이름만 다를뿐 동일한 리스트를 가리키는 변수이기 때문이다.

 

 

 

그렇다면 어떻게 다른 리스트를 가리키도록 할까?

 

 

1) 방법

a = [1,2,3]
b = a[:]
a[1] = 4
print(a)
print(b)

 

a[:]는 a 리스트 전체를 복사하여 b에 대입한다.

-> a list의 값을 변경하여도 b 리스트에는 영향을 끼치지않는다.

 

 

2) 방법

 

from copy import copy
a = [1,2,3]
b = copy(a)
a[1] = 4
print(a)
print(b)

 

 

반응형