단비의 코딩 공부 blog

[Python] study 3주차 본문

Python

[Python] study 3주차

황굽달 2024. 4. 12. 15:34
Python Tuple

 

튜플은 단일 변수에 여러 항목을 저장하는데 사용한다.

튜플은 순서가 지정되어 있고 변경할 수 없으며 중복값을 허용한다. 둥근 괄호를 사용한다.

thistuple = ("apple", "banana", "cherry")
print(thistuple)

출력 결과:

 

튜플에 포함된 항목 수를 확인하려면 len() 함수를 사용한다.

thistuple = tuple(("apple", "banana", "cherry"))
print(len(thistuple))

출력 결과:

 

항목이 하나만 있는 튜플을 만들기 위해서는 항목 뒤에 쉼표(,)를 추가해야한다.

thistuple = ("apple",)
print(type(thistuple))

#NOT a tuple
thistuple = ("apple")
print(type(thistuple))

출력 결과:

 

튜플은 모든 데이터 유형이 될 수 있다.

tuple1 = ("apple", "banana", "cherry")
tuple2 = (1, 5, 7, 9, 3)
tuple3 = (True, False, False)

print(tuple1)
print(tuple2)
print(tuple3)


tuple1 = ("abc", 34, True, 40, "male")
print(tuple1)

출력 결과:

 

tuple() 생성자를 사용하여 튜플을 만드는것이 가능하다.

thistuple = tuple(("apple", "banana", "cherry"))
print(thistuple)

출력 결과:

 

Python Tuple - 엑세스

 

대괄호 안에 인덱스 번호를 참조하여 튜플 항목에 엑세스 할 수 있다. 음수 인덱싱은 끝부터 시작한다는 뜻이다.

thistuple = ("apple", "banana", "cherry")
print(thistuple[1])

thistuple = ("apple", "banana", "cherry")
print(thistuple[-1])

출력 결과:

 

범위의 시작 위치와 끝 위치를 지정하여 인덱스 범위를 지정할 수 있다.

범위를 지정할 때 반환 값은 지정된 항목이 포함된 새 튜플이 된다.

thistuple = ("apple", "banana", "cherry", "orange", "kiwi", "melon", "mango")
print(thistuple[2:5])

출력 결과:

 

시작 값을 생략하면 범위가 첫 번째 항목에서 시작된다. 종료값을 생략하면 범위는 튜플의 끝까지 이어진다.

thistuple = ("apple", "banana", "cherry", "orange", "kiwi", "melon", "mango")
print(thistuple[:4])

thistuple = ("apple", "banana", "cherry", "orange", "kiwi", "melon", "mango")
print(thistuple[2:])

출력 결과:

 

튜플의 끝부터 검색을 시작하려면 음수 인덱스를 지정한다

thistuple = ("apple", "banana", "cherry", "orange", "kiwi", "melon", "mango")
print(thistuple[-4:-1])

출력 결과:

 

지정된 항목이 튜플에 있는지 확인하려면 in 키워드를 사용한다.

thistuple = ("apple", "banana", "cherry")
if "apple" in thistuple:
  print("Yes, 'apple' is in the fruits tuple")

출력 결과:

 

Python Tuple - 업데이트

 

튜플이 생성되면 해당 값을 변경할 수 없다.

그러나 방법이 있는데 튜플을 리스트로 변환하고, 리스트를 다시 튜플로 변경하는 방법이다.

x = ("apple", "banana", "cherry")
y = list(x)
y[1] = "kiwi"
x = tuple(y)

print(x)

출력 결과:

 

튜플은 불변이므로 내장 메서드가 없지만 튜플에  append() (맨 뒤에!!) 항목을 추가하는 방법이 있다.

 

1. 목록으로 변환 : 목록으로 변환하고 항목을 추가한 다음 다시 튜플로 변경한다.

2. 튜플에 튜플을 추가 : 튜플에 튜플을 추가하는 것이 허용되므로 하나의 항목(또는 여러 개)을 추가하려면 해당 항목으로 새 튜플을 만들고 기존 튜플에 추가한다.

#1
thistuple = ("apple", "banana", "cherry")
y = list(thistuple)
y.append("orange")
thistuple = tuple(y)

#2
thistuple = ("apple", "banana", "cherry")
y = ("orange",)
thistuple += y

print(thistuple)

출력 결과:

 

튜플은 변경할 수 없으므로 항목을 제거할 수는 없지만 튜플 항목을 변경하고 추가하는 데 사용한 것과 동일한 해결 방법을 사용할 수 있다.

thistuple = ("apple", "banana", "cherry")
y = list(thistuple)
y.remove("apple")
thistuple = tuple(y)


thistuple = ("apple", "banana", "cherry")
del thistuple
print(thistuple) #this will raise an error because the tuple no longer exists

출력 결과:

 

Python Tuple - 패킹 / 언패킹

 

튜플을 생성할 때 일반적으로 값을 할당하게 되는데, 이를 튜플 '패킹'이라고 한다.

그러나 파이썬에서는 값을 다시 변수로 추출할 수 있는데 이를 '언패킹'이라고 한다.

fruits = ("apple", "banana", "cherry")

(green, yellow, red) = fruits

print(green)
print(yellow)
print(red)

출력 결과:

 

변수 수가 값의 수보다 적은 경우 변수 이름에 *(asterisk)을 추가하면 값이 리스트로 변수에 할당된다.

fruits = ("apple", "banana", "cherry", "strawberry", "raspberry")

(green, yellow, *red) = fruits
# 나머지 값을 red라는 목록으로 할당

print(green)
print(yellow)
print(red)

출력 결과:

 

*가 마지막 변수 이름이 아닌 다른 변수 이름에 추가되면 파이썬은 남은 값 수가 남은 변수 수와 일치할 때까지 변수에 값을 할당한다.

fruits = ("apple", "mango", "papaya", "pineapple", "cherry")

(green, *tropic, red) = fruits

print(green)
print(tropic)
print(red)

출력 결과:

 

Python Tuple - loop

 

for 루프를 사용하여 튜플 항목을 반복할 수 있다.

thistuple = ("apple", "banana", "cherry")
for x in thistuple:
  print(x)

출력 결과:

 

인덱스 번호를 참조하여 튜플 항목을 반복할 수 있다.

range()len()함수를 사용하여 적절한 반복 가능 항목을 만든다.

thistuple = ("apple", "banana", "cherry")
for i in range(len(thistuple)):
  print(thistuple[i])

출력 결과:

 

while루프를 사용하여 튜플 항목을 반복할 수 있다.

len() 함수를 사용하여 튜플의 길이를 결정한 다음 0에서 시작하여 해당 인덱스를 참조하여 튜플 항목을 반복한다.

thistuple = ("apple", "banana", "cherry")
i = 0
while i < len(thistuple):
  print(thistuple[i])
  i = i + 1

출력 결과:

 

Python Tuple - Join

 

두 개 이상의 튜플을 결합하려면 + 연산자를 사용한다.

튜플의 내용을 주어진 횟수만큼 곱하려면 * 연산자를 사용한다.

tuple1 = ("a", "b" , "c")
tuple2 = (1, 2, 3)

tuple3 = tuple1 + tuple2
print(tuple3)


fruits = ("apple", "banana", "cherry")
mytuple = fruits * 2
print(mytuple)

출력 결과:

 

Python Tuple - Methods

 

Method       Description

count() Returns the number of times a specified value occurs in a tuple
index() Searches the tuple for a specified value and returns the position of where it was found

 

Python Sets

 

세트는 단일 변수에 여러항목을 저장하는 데 사용된다.

세트는 순서가 없고, 변경할 수 없으며, 색인이 생성되지 않은 컬렉션이다.

thisset = {"apple", "banana", "cherry"}
print(thisset)

출력 결과: 순서가 없으므로 랜덤으로 출력된다.

 

중복은 허용되지 않는다.

thisset = {"apple", "banana", "cherry", "apple"}
print(thisset)

출력 결과:

 

True와 1은 동일값으로 인정되며 중복항목으로 처리된다.

False와 0은 동일값으로 인정되며 중복항목으로 처리된다.

thisset = {"apple", "banana", "cherry", True, 1, 2}
print(thisset)

thisset = {"apple", "banana", "cherry", False, True, 0}
print(thisset)

출력 결과:

 

Python Sets - 엑세스

 

세트에서는 인덱스 키를 참조하여 엑세스할 수 없다.

그러나 for루프를 사용하여 세트 항목을 반복하거나 in 키워드를 사용하여 지정된 값이 세트에 있는지 알 수있다.

thisset = {"apple", "banana", "cherry"}
for x in thisset:
  print(x)


thisset = {"apple", "banana", "cherry"}
print("banana" in thisset)


thisset = {"apple", "banana", "cherry"}
print("banana" not in thisset)

출력 결과:

 

Python Sets - 항목 추가

 

세트에 항목을 추가하려면 add() 메서드를 사용한다.

thisset = {"apple", "banana", "cherry"}

thisset.add("orange")

print(thisset)

출력 결과:

 

다른 항목을 현재 세트에 추가 하려면 update() 메서드를 사용한다.

thisset = {"apple", "banana", "cherry"}
tropical = {"pineapple", "mango", "papaya"}

thisset.update(tropical)

print(thisset)

출력 결과:

 

반복 가능한 모든 개체를 추가할 수 있다.

thisset = {"apple", "banana", "cherry"}
mylist = ["kiwi", "orange"]

thisset.update(mylist)

print(thisset)

출력 결과:

 

Python Sets - 항목 제거

 

세트에서 항목을 제거하려면 remove() 또는 discard() 메서드를 사용한다.

remove()는 제거할 항목이 없으면 오류가 발생하고, discard() 메서드는 오류가 발생하지 않는다.

thisset = {"apple", "banana", "cherry"}

thisset.remove("banana")

print(thisset)


thisset = {"apple", "banana", "cherry"}

thisset.discard("banana")

print(thisset)

출력 결과:

 

pop() 메서드를 사용하여 임의의 항목을 제거할 수 있다.

thisset = {"apple", "banana", "cherry"}

x = thisset.pop()

print(x) #removed item

print(thisset) #the set after removal

출력 결과:

 

clear() 메서드는 세트를 비우고, del 키워드는 세트를 완전히 삭제한다.

thisset = {"apple", "banana", "cherry"}

thisset.clear()

print(thisset)


thisset = {"apple", "banana", "cherry"}

del thisset

print(thisset)

출력 결과:

 

Python Sets - loop

 

for 루프를 사용하여 설정항목을 반복할 수 있다.

thisset = {"apple", "banana", "cherry"}

for x in thisset:
  print(x)

출력 결과:

 

Python Sets - Join

 

union() 메서드는 두 세트의 모든 항목이 포함된 새 세트를 반환한다.

union() 메서드 대신에 | 연산자를 사용해도 동일한 결과를 얻을 수 있다.

set1 = {"a", "b", "c"}
set2 = {1, 2, 3}

set3 = set1.union(set2)
print(set3)


set1 = {"a", "b", "c"}
set2 = {1, 2, 3}

set3 = set1 | set2
print(set3)

출력 결과: 랜덤

 

모든 결합 방법과 연산자를 사용하여 여러 세트를 결합할 수 있다.

쉼표로 구분하여 괄호 안에 더 많은 세트를 추가하면된다.

set1 = {"a", "b", "c"}
set2 = {1, 2, 3}
set3 = {"John", "Elena"}
set4 = {"apple", "bananas", "cherry"}

myset = set1.union(set2, set3, set4)
print(myset)


set1 = {"a", "b", "c"}
set2 = {1, 2, 3}
set3 = {"John", "Elena"}
set4 = {"apple", "bananas", "cherry"}

myset = set1 | set2 | set3 |set4
print(myset)

출력 결과: 랜덤

 

update() 메서드는 set2의 항목을 set1에 삽입한다.

set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}

set1.update(set2)
print(set1)

출력 결과:랜덤

 

intersection() (교집합)메서드는 두 세트 모드에 존재하는 항목만 포함하는 새로운 세트를 반환한다.

intersection()  메서드 대신 &연산자를 사용해 동일한 결과를 얻을 수 있다.

연산자 & 를 사용하면 집합과 집합만 조인할 수 있으며,  intersecton() 메서드에서 사용할 수 있는 다른 데이터 유형과는 조인할 수 없다.

set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set3 = set1.intersection(set2)
print(set3)


set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set3 = set1 & set2
print(set3)

출력 결과:

 

intersection_update()메서드는 중복된 항목만 유지하지만 새 세트를 반환하는 대신 원래 세트를 변경한다.

set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set1.intersection_update(set2)

print(set1)

출력 결과:

 

difference()메서드는 다른 세트에는 없는 첫 번째 세트의 항목만 포함하는 새 세트를 반환한다.

- 연산자도 동일한 결과를 얻을 수 있다.

연산자 - 를 사용하면 집합과 집합만 조인할 수 있으며,  difference() 메서드에서 사용할 수 있는 다른 데이터 유형과는 조인할 수 없다.

set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set3 = set1.difference(set2)

print(set3)


set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set3 = set1 - set2
print(set3)

출력 결과:

 

symmetric_difference() 방법은 두 세트 모두에 존재하지 않는 요소만 유지한다.

^(exclusive or) 연산자도 동일한 결과를 얻을 수 있다.  

연산자 ^ 를 사용하면 집합과 집합만 조인할 수 있으며, symmetric_difference() 메서드에서 사용할 수 있는 다른 데이터 유형과는 조인할 수 없다.

set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set3 = set1.symmetric_difference(set2)

print(set3)


set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set3 = set1 ^ set2
print(set3)

출력 결과:

 

symmetric_difference_update()메서드는 중복 항목을 제외한 모든 항목도 유지하지만 새 세트를 반환하는 대신 원래 세트를 변경한다.

set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}

set1.symmetric_difference_update(set2)

print(set1)

출력 결과:

 

Python Sets - Methods

 

Method                                        Shortcut     Description

add()   Adds an element to the set
clear()   Removes all the elements from the set
copy()   Returns a copy of the set
difference() - Returns a set containing the difference between two or more sets
difference_update() -= Removes the items in this set that are also included in another, specified set
discard()   Remove the specified item
intersection() & Returns a set, that is the intersection of two other sets
intersection_update() &= Removes the items in this set that are not present in other, specified set(s)
isdisjoint()   Returns whether two sets have a intersection or not
issubset() <= Returns whether another set contains this set or not
  < Returns whether all items in this set is present in other, specified set(s)
issuperset() >= Returns whether this set contains another set or not
  > Returns whether all items in other, specified set(s) is present in this set
pop()   Removes an element from the set
remove()   Removes the specified element
symmetric_difference() ^ Returns a set with the symmetric differences of two sets
symmetric_difference_update() ^= Inserts the symmetric differences from this set and another
union() | Return a set containing the union of sets
update() |= Update the set with the union of this set and others

 

 

 

'Python' 카테고리의 다른 글

[Python] study 5주차  (1) 2024.04.26
[Python] study 4주차  (0) 2024.04.17
[Python] study 2주차  (0) 2024.04.05
[Python] study 1주차  (0) 2024.04.04