Programing

빈 집합 리터럴?

c10106 2022. 3. 14. 21:00
반응형

빈 집합 리터럴?

[]= 비어 있음list

()= 비어 있음tuple

{}= 비어 있음dict

빈 것과 비슷한 표기법이 있는가?set아니면 내가 편지를 써야 하나?set()?

아니, 빈 세트는 문자 그대로 구문이 없어.너는 글을 써야 한다.

무슨 수를 써서라도 set()빈 세트를 생성하십시오.

하지만 사람들에게 깊은 인상을 주고 싶다면, 그들에게 당신이 리터럴과 리터럴을 사용하여 빈 세트를 만들 수 있다고 말해라.*Python >= 3.5(PEP 448 참조):

>>> s = {*()}  # or {*{}} or {*[]}
>>> print(s)
set()

이것은 기본적으로 보다 응축된 행동방식이다.{_ for _ in ()}하지만, 이러지 마.

수락된 답변을 연장하기 위해:

원본 버전2.7그리고3.1을 가지고 있다set문자 그대로의{}관습의 형태로{1,2,3}그렇지만{}그 자체가 여전히 빈 구술에 쓰이고 있다.

Python 2.7 (Python <2.7>에서는 첫 줄이 유효하지 않음)

>>> {1,2,3}.__class__
<type 'set'>
>>> {}.__class__
<type 'dict'>

파이톤 3.x

>>> {1,2,3}.__class__
<class 'set'>
>>> {}.__class__
<class 'dict'>

자세한 내용은 https://docs.python.org/3/whatsnew/2.7.html#other-language-changes를 참조하십시오.

응. 빈칸이 아닌 곳에 쓰는 것과 같은 표기법이 빈칸에도 효과가 있어.

비어 있지 않은 상태 간의 차이점 확인dict그리고set리터럴:

{1: 'a', 2: 'b', 3: 'c'}- 내부의 여러 키 값 쌍이dict
{'aaa', 'bbb', 'ccc'}- 내부에 있는 가치관의 튜플은set

자:

{}== 0개의 키 값 쌍 수 == 비어 있음dict
{*()}== 값의 빈 튜플 == 비어 있음set

하지만, 당신이 할 수 있다는 사실이 당신이 해야 한다는 것을 의미하지는 않는다.강력한 이유가 없는 한, 다음과 같은 빈 세트를 명시적으로 구성하는 것이 좋다.

a = set()

성능:

리터럴은 세트 구성자(CPython-3.8, 2019 PC, Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz):

>>> %timeit ({*()} & {*()}) | {*()}
214 ns ± 1.26 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

>>> %timeit (set() & set()) | set()
252 ns ± 0.566 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

... 그리고 완전성을 위해서, 위의 표현에 대한 레나토 가르시아 제안은 60% 정도 더 빨라!

>>> ϕ = frozenset()

>>> %timeit (ϕ & ϕ) | ϕ
100 ns ± 0.51 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

NB: ctilen이 논평에서 지적했듯이,{()}빈 세트가 아니다.빈 튜플이 1가지 요소로 이루어진 세트 입니다.

비교를 위해 리터럴을 원하는지, 아니면 할당을 원하는지에 따라 달라진다.

기존 세트를 비워 두려면.clear()특히 새 개체를 만들지 않으려면 메타드를 사용하십시오.비교를 하려면set()또는 길이가 0인지 확인하십시오.

예:

#create a new set    
a=set([1,2,3,'foo','bar'])
#or, using a literal:
a={1,2,3,'foo','bar'}

#create an empty set
a=set()
#or, use the clear method
a.clear()

#comparison to a new blank set
if a==set():
    #do something

#length-checking comparison
if len(a)==0:
    #do something

이상한 아이디어 추가: Python 3에서 유니코드 식별자를 받아들이면 변수를 선언할 수 있다.ϕ = frozenset()(기존은 U+03D5)를 대신하여 사용한다.

Python에서 빈 세트를 만드는 몇 가지 방법이 있다.

  1. set() 방법 사용
    이것은 그 변수에 Empty set를 생성하는 python의 내장된 방법이다.
  2. 를 사용하여 clear() 메서구 사書口 사사(Creative Engineer Technology LOL)
    다음 예제를 참조하십시오.

    sets={"Hi","How","you"All"}
    유형(세트)(이 라인 출력 : 설정)
    clearme
    인쇄(세트)(이 라인 출력: {})
    유형(세트)(이 라인 출력 : 설정)

이렇게 두 가지 방법으로 빈 세트를 만들 수 있다.

참조URL: https://stackoverflow.com/questions/6130374/empty-set-literal

반응형