python
이 자습서에서는 Python 집합에 대한 모든 것을 배웁니다. 생성 방법, 요소 추가 또는 제거, Python의 집합에서 수행되는 모든 작업
세트는 정렬되지 않은 항목 모음입니다. 모든 세트 요소는 고유하며(중복되지 않음) 변경 불가능해야 합니다(변경할 수 없음).
그러나 집합 자체는 변경 가능합니다. 항목을 추가하거나 제거할 수 있습니다.
집합은 합집합, 교집합, 대칭차 등과 같은 수학적 집합 연산을 수행하는 데에도 사용할 수 있습니다.
<시간>
중괄호 {}
안에 모든 항목(요소)을 배치하여 집합이 생성됩니다. , 쉼표로 구분하거나 기본 제공 set()
사용 기능.
여러 항목을 가질 수 있으며 다양한 유형(정수, 부동 소수점, 튜플, 문자열 등)이 될 수 있습니다. 그러나 집합은 목록, 집합 또는 사전과 같은 변경 가능한 요소를 요소로 가질 수 없습니다.
# Different types of sets in Python
# set of integers
my_set = {1, 2, 3}
print(my_set)
# set of mixed datatypes
my_set = {1.0, "Hello", (1, 2, 3)}
print(my_set)
출력
{1, 2, 3} {1.0, (1, 2, 3), 'Hello'}
다음 예도 시도해 보십시오.
# set cannot have duplicates
# Output: {1, 2, 3, 4}
my_set = {1, 2, 3, 4, 3, 2}
print(my_set)
# we can make set from a list
# Output: {1, 2, 3}
my_set = set([1, 2, 3, 2])
print(my_set)
# set cannot have mutable items
# here [3, 4] is a mutable list
# this will cause an error.
my_set = {1, 2, [3, 4]}
출력
{1, 2, 3, 4} {1, 2, 3} Traceback (most recent call last): File "<string>", line 15, in <module> my_set = {1, 2, [3, 4]} TypeError: unhashable type: 'list'<시간>
빈 집합을 만드는 것은 약간 까다롭습니다.
빈 중괄호 {}
파이썬에서 빈 사전을 만듭니다. 요소 없이 집합을 만들기 위해 set()
을 사용합니다. 인수가 없는 함수입니다.
# Distinguish set and dictionary while creating empty set
# initialize a with {}
a = {}
# check data type of a
print(type(a))
# initialize a with set()
a = set()
# check data type of a
print(type(a))
출력
<class 'dict'> <class 'set'><시간>
세트는 변경 가능합니다. 그러나 순서가 지정되지 않았기 때문에 인덱싱은 의미가 없습니다.
인덱싱이나 슬라이싱을 사용하여 집합의 요소에 액세스하거나 변경할 수 없습니다. 설정 데이터 유형이 지원하지 않습니다.
add()
을 사용하여 단일 요소를 추가할 수 있습니다. 메소드 및 update()
을 사용하는 여러 요소 방법. update()
메서드는 튜플, 목록, 문자열 또는 기타 집합을 인수로 사용할 수 있습니다. 모든 경우에 중복이 방지됩니다.
# initialize my_set
my_set = {1, 3}
print(my_set)
# my_set[0]
# if you uncomment the above line
# you will get an error
# TypeError: 'set' object does not support indexing
# add an element
# Output: {1, 2, 3}
my_set.add(2)
print(my_set)
# add multiple elements
# Output: {1, 2, 3, 4}
my_set.update([2, 3, 4])
print(my_set)
# add list and set
# Output: {1, 2, 3, 4, 5, 6, 8}
my_set.update([4, 5], {1, 6, 8})
print(my_set)
출력
{1, 3} {1, 2, 3} {1, 2, 3, 4} {1, 2, 3, 4, 5, 6, 8}<시간>
discard()
메소드를 사용하여 특정 항목을 세트에서 제거할 수 있습니다. 및 remove()
.
둘의 유일한 차이점은 discard()
요소가 집합에 없으면 함수는 집합을 변경하지 않고 그대로 둡니다. 반면에 remove()
함수는 이러한 조건에서 오류를 발생시킵니다(요소가 집합에 없는 경우).
다음 예에서 이를 설명합니다.
# Difference between discard() and remove()
# initialize my_set
my_set = {1, 3, 4, 5, 6}
print(my_set)
# discard an element
# Output: {1, 3, 5, 6}
my_set.discard(4)
print(my_set)
# remove an element
# Output: {1, 3, 5}
my_set.remove(6)
print(my_set)
# discard an element
# not present in my_set
# Output: {1, 3, 5}
my_set.discard(2)
print(my_set)
# remove an element
# not present in my_set
# you will get an error.
# Output: KeyError
my_set.remove(2)
출력
{1, 3, 4, 5, 6} {1, 3, 5, 6} {1, 3, 5} {1, 3, 5} Traceback (most recent call last): File "<string>", line 28, in <module> KeyError: 2
마찬가지로 pop()
을 사용하여 항목을 제거하고 반환할 수 있습니다. 방법.
set은 정렬되지 않은 데이터 유형이므로 어떤 항목이 팝될지 결정할 방법이 없습니다. 완전히 임의적입니다.
clear()
를 사용하여 세트에서 모든 항목을 제거할 수도 있습니다. 방법.
# initialize my_set
# Output: set of unique elements
my_set = set("HelloWorld")
print(my_set)
# pop an element
# Output: random element
print(my_set.pop())
# pop another element
my_set.pop()
print(my_set)
# clear my_set
# Output: set()
my_set.clear()
print(my_set)
print(my_set)
출력
{'H', 'l', 'r', 'W', 'o', 'd', 'e'} H {'r', 'W', 'o', 'd', 'e'} set()<시간>
집합은 합집합, 교집합, 차 및 대칭 차와 같은 수학적 집합 연산을 수행하는 데 사용할 수 있습니다. 연산자나 메서드를 사용하여 이 작업을 수행할 수 있습니다.
다음 작업에 대해 다음 두 세트를 고려해 보겠습니다.
>>> A = {1, 2, 3, 4, 5}
>>> B = {4, 5, 6, 7, 8}
A의 연합 및 B 두 집합의 모든 요소 집합입니다.
통합은 |
을 사용하여 수행됩니다. 운영자. union()
을 사용하여 동일한 작업을 수행할 수 있습니다. 방법.
# Set union method
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# use | operator
# Output: {1, 2, 3, 4, 5, 6, 7, 8}
print(A | B)
출력
{1, 2, 3, 4, 5, 6, 7, 8}
Python 셸에서 다음 예제를 시도하십시오.
# use union function
>>> A.union(B)
{1, 2, 3, 4, 5, 6, 7, 8}
# use union function on B
>>> B.union(A)
{1, 2, 3, 4, 5, 6, 7, 8}
<시간> A의 교차점 및 B 두 세트에 공통적인 요소의 세트입니다.
교차는 &
을 사용하여 수행됩니다. 운영자. intersection()
를 사용하여 동일한 작업을 수행할 수 있습니다. 방법.
# Intersection of sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# use & operator
# Output: {4, 5}
print(A & B)
출력
{4, 5}
Python 셸에서 다음 예제를 시도하십시오.
# use intersection function on A
>>> A.intersection(B)
{4, 5}
# use intersection function on B
>>> B.intersection(A)
{4, 5}
<시간> 집합 B의 차이 A 세트에서 (A - B )은 A에만 있는 요소 집합입니다. 하지만 B에는 없습니다. . 마찬가지로 B - A B의 요소 집합입니다. 그러나 A에는 없음 .
차이는 -
를 사용하여 수행됩니다. 운영자. difference()
을 사용하여 동일한 작업을 수행할 수 있습니다. 방법.
# Difference of two sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# use - operator on A
# Output: {1, 2, 3}
print(A - B)
출력
{1, 2, 3}
Python 셸에서 다음 예제를 시도하십시오.
# use difference function on A
>>> A.difference(B)
{1, 2, 3}
# use - operator on B
>>> B - A
{8, 6, 7}
# use difference function on B
>>> B.difference(A)
{8, 6, 7}
<시간> A의 대칭 차이 및 B A의 요소 집합입니다. 및 B 그러나 둘 다에는 없습니다(교차로 제외).
대칭 차이는 ^
를 사용하여 수행됩니다. 운영자. symmetric_difference()
메서드를 사용하여 동일한 작업을 수행할 수 있습니다. .
# Symmetric difference of two sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# use ^ operator
# Output: {1, 2, 3, 6, 7, 8}
print(A ^ B)
출력
{1, 2, 3, 6, 7, 8}
Python 셸에서 다음 예제를 시도하십시오.
# use symmetric_difference function on A
>>> A.symmetric_difference(B)
{1, 2, 3, 6, 7, 8}
# use symmetric_difference function on B
>>> B.symmetric_difference(A)
{1, 2, 3, 6, 7, 8}
<시간> 많은 set 메소드가 있으며 그 중 일부는 위에서 이미 사용했습니다. 다음은 집합 개체와 함께 사용할 수 있는 모든 메서드 목록입니다.
메소드 | 설명 |
---|---|
추가() | 세트에 요소 추가 |
지우기() | 세트에서 모든 요소를 제거합니다. |
복사() | 세트의 복사본을 반환합니다. |
차이() | 두 개 이상의 집합의 차이를 새 집합으로 반환 |
차이_업데이트() | 이 세트에서 다른 세트의 모든 요소를 제거합니다. |
discard() | 구성원인 경우 집합에서 요소를 제거합니다. (요소가 집합에 없으면 아무것도 하지 않음) |
교차로() | 두 집합의 교집합을 새 집합으로 반환 |
교차로_업데이트() | 자신과 다른 것의 교집합으로 집합을 업데이트합니다. |
isdisjoint() | 반환 True 두 집합에 null 교집합이 있는 경우 |
issubset() | 반환 True 다른 세트가 이 세트를 포함하는 경우 |
issuperset() | 반환 True 이 집합이 다른 집합을 포함하는 경우 |
팝() | 임의의 집합 요소를 제거하고 반환합니다. KeyError 증가 세트가 비어 있는 경우 |
제거() | 세트에서 요소를 제거합니다. 요소가 구성원이 아닌 경우 KeyError 발생 |
대칭차이() | 두 세트의 대칭 차이를 새 세트로 반환 |
대칭_차이_업데이트() | 자신과 다른 것의 대칭적 차이로 집합을 업데이트합니다. |
연합() | 새 집합에서 집합의 합집합을 반환합니다. |
업데이트() | 자신과 다른 사람의 합집합으로 집합을 업데이트합니다. |
in
을 사용하여 항목이 세트에 존재하는지 여부를 테스트할 수 있습니다. 키워드.
# in keyword in a set
# initialize my_set
my_set = set("apple")
# check if 'a' is present
# Output: True
print('a' in my_set)
# check if 'p' is present
# Output: False
print('p' not in my_set)
출력
True False<시간>
for
를 사용하여 세트의 각 항목을 반복할 수 있습니다. 루프.
>>> for letter in set("apple"):
... print(letter)
...
a
p
e
l
<시간>
all()
와 같은 내장 함수 , any()
, enumerate()
, len()
, max()
, min()
, sorted()
, sum()
등은 일반적으로 다른 작업을 수행하기 위해 세트와 함께 사용됩니다.
함수 | 설명 |
---|---|
모두() | 반환 True 세트의 모든 요소가 true인 경우(또는 세트가 비어 있는 경우). |
모든() | 반환 True 세트의 요소 중 하나라도 true인 경우. 세트가 비어 있으면 False 을 반환합니다. . |
열거() | 열거 개체를 반환합니다. 세트의 모든 항목에 대한 인덱스와 값을 쌍으로 포함합니다. |
len() | 세트의 길이(항목 수)를 반환합니다. |
최대() | 집합에서 가장 큰 항목을 반환합니다. |
최소() | 세트에서 가장 작은 항목을 반환합니다. |
정렬() | 집합의 요소에서 새로운 정렬된 목록을 반환합니다(집합 자체를 정렬하지 않음). |
합() | 집합에 있는 모든 요소의 합계를 반환합니다. |
Frozenset은 집합의 특성을 가진 새로운 클래스이지만 해당 요소는 한 번 할당되면 변경할 수 없습니다. 튜플은 변경할 수 없는 목록인 반면, frozenset은 변경할 수 없는 집합입니다.
변경 가능한 세트는 해시할 수 없으므로 사전 키로 사용할 수 없습니다. 반면에, frozensets는 해시 가능하며 사전의 키로 사용할 수 있습니다.
Frozenset은 frozenset() 함수를 사용하여 생성할 수 있습니다.
이 데이터 유형은 copy()
과 같은 메소드를 지원합니다. , difference()
, intersection()
, isdisjoint()
, issubset()
, issuperset()
, symmetric_difference()
및 union()
. 불변이기 때문에 요소를 추가하거나 제거하는 메소드가 없습니다.
# Frozensets
# initialize A and B
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])
Python 셸에서 다음 예제를 시도하십시오.
>>> A.isdisjoint(B)
False
>>> A.difference(B)
frozenset({1, 2})
>>> A | B
frozenset({1, 2, 3, 4, 5, 6})
>>> A.add(3)
...
AttributeError: 'frozenset' object has no attribute 'add'
python
파이썬 strptime() 이 기사에서는 문자열에서 datetime 객체를 만드는 방법을 배웁니다(예제를 통해). 동영상:Python의 날짜 및 시간 strptime() 메소드는 주어진 문자열에서 datetime 객체를 생성합니다. 참고: datetime을(를) 만들 수 없습니다. 모든 문자열의 개체. 문자열은 특정 형식이어야 합니다. 예시 1:문자열을 datetime 개체로 from datetime import datetime date_string = 21 June, 2018 print(date_string =,
놓치신 경우:Python 2는 2020년 1월 1일부로 공식적으로 지원되지 않음 . 아직 Python 2.7을 사용 중이라면 지금 업그레이드하세요. . 실행 중인 버전이 확실하지 않은 경우 Python 버전을 확인하세요. 많은 패키지 유지 관리자가 Python 3으로 마이그레이션했습니다. 일부는 여전히 Python 2를 지원하고 다른 일부는 이미 Python 2 지원을 중단했습니다. Python 2 코드 기반에서 마이그레이션해야 하는 경우 Python 코드를 Python 3으로 마이그레이션하는 방법에 대한 가이드를 읽어보세요.