>>> s1={10,20,30}
>>> s1
{10, 20, 30}
>>> s1.add(40)
>>> s1
{40, 10, 20, 30}
>>> s1.update([50,60])
>>> s1
{40, 10, 50, 20, 60, 30}
>>> s1.remove(40)
>>> s1
{10, 50, 20, 60, 30}
>>> s1.clear()
>>> s1
set()
파이썬 소스 입니다. 소스과 결과값입니다. 소스에 대해 자세히 설명
▲ 세트 조작함수
.add() 함수 : 1개의 값을 추가합니다.
.update() 함수 : 여러 개의 값을 추가합니다.
.remove() 함수 : 특정 값을 삭제합니다.
.clear() 함수 : 모든 항목을 삭제합니다.
세트(set)라는 자료형의 주요 연산들을 보여줍니다. 세트는 순서가 없고, 중복된 요소를 허용하지 않는 자료구조입니다. 다음은 각 줄에 대한 자세한 설명입니다.
세트 생성 및 출력
s1={10,20,30}
s1
{10, 20, 30}
첫 번째 줄은 변수 s1에 {10, 20, 30}이라는 요소를 가진 세트를 할당합니다. 중괄호 {}를 사용해 세트를 만듭니다. 이어진 줄에서는 s1을 출력하여 현재 세트의 내용을 보여줍니다. 세트는 순서가 없기 때문에 출력 순서는 다를 수 있습니다.
요소 추가: add()
s1.add(40)
s1
{40, 10, 20, 30}
add() 메서드는 단일 요소를 세트에 추가합니다. 여기서는 40을 s1에 추가했습니다. 세트의 무작위 순서 때문에 출력 결과에서는 40이 다른 숫자들 앞에 나타날 수 있습니다.
여러 요소 추가: update()
s1.update([50,60])
s1
{40, 10, 50, 20, 60, 30}
update() 메서드는 여러 요소를 한 번에 세트에 추가할 때 사용합니다. 이 메서드는 리스트, 튜플, 다른 세트와 같은 반복 가능한(iterable) 객체를 인수로 받습니다. 여기서는 [50, 60]이라는 리스트의 두 요소를 s1에 추가했습니다.
요소 제거: remove()
s1.remove(40)
s1
{10, 50, 20, 60, 30}
remove() 메서드는 세트에서 특정 요소를 제거합니다. s1에서 40을 제거했습니다. 만약 제거하려는 요소가 세트 안에 없으면 KeyError가 발생합니다.
모든 요소 제거: clear()
s1.clear()
s1
set()
clear() 메서드는 세트에 있는 모든 요소를 제거하여 세트를 비웁니다. 그 결과, s1은 요소가 없는 빈 세트 set()가 됩니다.
네, 맞습니다. 프로그래밍에서 "요소(element)"는 일반적으로 값을 의미합니다.
자료구조(예: 리스트, 세트, 튜플, 딕셔너리 등)를 구성하는 개별적인 값 하나하나를 요소라고 부릅니다.
예를 들어, my_list = [10, 20, 30]이라는 리스트가 있을 때, 10, 20, 30 각각이 모두 이 리스트의 요소입니다.
이와 같이, 자료구조 안에 들어 있는 개별적인 데이터를 지칭할 때 "요소"라는 용어를 사용합니다.
추가 질문)
>>> s1.update(50,60)
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
s1.update(50,60)
TypeError: 'int' object is not iterable
>>> s1.update((50,60))
>>> s1
{10, 50, 20, 90, 60, 30}
에서 튜플 자료형으로 넣을때는 괄호를 빼면 에러나고, 꼭 괄호를 추가해서 여러요소를 넣어야 에러가 안나는군요.
네, 맞습니다. 아주 정확하게 이해하셨습니다.
s1.update(50,60)에서 에러가 발생하는 이유는 update() 메서드가 여러 개의 개별 인자를 받는 것이 아니라, 하나의 반복 가능한(iterable) 객체를 인자로 받기 때문입니다. 50과 60은 각각 정수(int)이며, 정수는 반복할 수 있는 객체가 아니기 때문에 'int' object is not iterable이라는 TypeError가 발생합니다.
반면에, s1.update((50,60))는 괄호 ()를 사용하여 (50, 60)이라는 튜플(tuple)을 인자로 전달했습니다. 튜플은 여러 요소를 담고 있는 반복 가능한 객체이므로, update() 메서드가 튜플의 각 요소를 세트에 성공적으로 추가할 수 있습니다.
결론적으로, update()는 여러 개의 개별 값(50, 60)이 아닌, 여러 값을 담고 있는 하나의 컨테이너(리스트 [], 튜플 (), 다른 세트 {})를 필요로 합니다.
여기서 다른세트 {} 로 어떻게 추가하는지 아래 소스와 설명 추가합니다
update() 메서드로 다른 세트를 추가하는 방법은 다음과 같습니다.
다른 세트로 update() 사용하기
s1 = {10, 20, 30}
s2 = {40, 50, 60}
# s1에 s2의 모든 요소를 추가합니다.
s1.update(s2)
print(s1)
결과:
{10, 20, 30, 40, 50, 60}
s1.update(s2)를 실행하면, s2 세트에 있는 모든 요소들이 s1에 추가됩니다. update()는 세트뿐만 아니라 리스트, 튜플 등 여러 요소를 담고 있는 모든 "반복 가능한(iterable)" 객체를 인수로 사용할 수 있습니다.
반복 가능한(iterable) 이것은 무슨 뜻인가요? 아래 설명
'반복 가능한(iterable)'은 그 안에 있는 요소들을 하나씩 차례대로 꺼낼 수 있는 객체를 의미합니다. 🔄
가장 쉽게 생각할 수 있는 반복 가능한 객체는 다음과 같습니다:
- 리스트 (List): [1, 2, 3]
- 튜플 (Tuple): (10, 20)
- 세트 (Set): { 'a', 'b' }
- 문자열 (String): 'hello'
- 딕셔너리 (Dictionary): {'key1': 'value1', 'key2': 'value2'}
이러한 객체들은 for 문을 사용하여 그 안에 있는 값들을 하나씩 순회할 수 있기 때문에 '반복 가능한 객체'라고 부릅니다.
예를 들어, for 문은 반복 가능한 객체를 만나면, 객체의 시작부터 끝까지 요소를 차례대로 방문하면서 명령을 수행합니다.
my_list = [10, 20, 30]
for number in my_list:
print(number)
위 코드에서 my_list는 반복 가능한 객체이며, for 문은 10, 20, 30을 순서대로 꺼내 number 변수에 할당하고 출력합니다.
반면에, 정수(integer)나 부동 소수점(float) 같은 단일 값은 반복 가능한 객체가 아닙니다. 이들은 내부에 여러 값을 가지고 있지 않기 때문에 for 문을 돌릴 수 없습니다. 그래서 s1.update(50, 60)처럼 단일 값을 여러 개 나열하면 오류가 발생하는 것입니다. update()는 반복 가능한 객체 하나를 인자로 기대하기 때문입니다.
개념정리 질문)
for문처럼 값을 순서대로 계속 넣어서 돌릴 수 있는 자료 형태를 '반복 가능한(iterable)'라고 표현하나요?
네, 정확하게 이해하셨습니다. for 문처럼 값을 순서대로 하나씩 꺼내서 반복적으로 처리할 수 있는 자료형을 "반복 가능한(iterable) 객체"라고 부릅니다.
'반복 가능한(iterable)' 객체의 의미 (중요)
반복 가능한 객체는 다음과 같은 특징을 가집니다.
- 순회(Iteration) 가능: 내부의 요소를 처음부터 끝까지 차례대로 방문할 수 있습니다.
- 컨테이너 역할: 여러 개의 요소를 담는 그릇 역할을 합니다.
예를 들어, 리스트, 튜플, 세트, 딕셔너리, 문자열 등이 모두 반복 가능한 객체입니다. 이들은 내부적으로 반복을 위한 특별한 메커니즘을 가지고 있어서 for 문과 함께 사용될 수 있습니다.
반면, 정수(int)나 실수(float)와 같은 단일 값은 반복 가능한 객체가 아닙니다. 이들은 여러 값을 담고 있지 않기 때문에 for 문으로 순회할 수 없습니다.
따라서 s1.update(50, 60)에서 에러가 난 이유도, update() 메서드가 정수 50과 60을 반복 가능한 객체로 인식하지 못했기 때문입니다. s1.update([50, 60])처럼 리스트나 튜플로 묶어주면, update()는 이 반복 가능한 객체에서 값을 하나씩 꺼내 세트에 추가할 수 있게 됩니다.
'파이썬(Python)' 카테고리의 다른 글
| 파이썬, len()함수에 대해 예제와 함께 자세히 정리 (1) | 2025.08.19 |
|---|---|
| 파이썬, 세트 연산(세트 합집합, 교집합, 차집합) (4) | 2025.08.19 |
| 파이썬, set()에 대해 정리 (1) | 2025.08.19 |
| 파이썬에서 인덱싱, 인덱스가 무엇인지 정리 (0) | 2025.08.19 |
| 파이썬에서 딕셔너리 조작함수, get, pop del, items, keys, values 이 함수 (2) | 2025.08.17 |
콘텐츠 내 자동삽입광고
