Set letterlijk leegmaken?

[]= lege list

()= leeg tuple

{}= leeg dict

Is er een vergelijkbare notatie voor een lege set?
Of moet ik set()schrijven?


Antwoord 1, autoriteit 100%

Nee, er is geen letterlijke syntaxis voor de lege set. Je moet set()schrijven.


Antwoord 2, autoriteit 12%

In ieder geval gebruikset()om een lege set te maken.

Maar als je indruk wilt maken op mensen, vertel ze dan dat je een lege set kunt maken met behulp van letterlijke waarden en *met Python >= 3.5 (zie PEP 448) door te doen:

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

dit is in feite een meer beknopte manier om {_ for _ in ()}te doen, maar doe dit niet.


Antwoord 3, autoriteit 8%

Om het geaccepteerde antwoord uit te breiden:

Vanaf versie 2.7en 3.1heeft python setletterlijk {}in de vorm van gebruik {1,2,3}, maar {}zelf nog steeds gebruikt voor leeg dictaat.

Python 2.7 (eerste regel is ongeldig in Python <2.7)

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

Python 3.x

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

Hier meer: ​​https: //docs.python. Org / 3 / WhatsNew / 2.7.html # Andere talen-veranderingen


Antwoord 4

Ja. Dezelfde notatie die werkt voor niet-lege dict / set werkt voor lege.

Let op het verschil tussen niet-lege dicten setLetterals:

{1: 'a', 2: 'b', 3: 'c'}– Een aantal sleutelwaardeparen binnen maakt een dict< br>
{'aaa', 'bbb', 'ccc'}– A Tuple van waarden binnen maakt een set

Dus:

{}== nulnummer van sleutelwaarde paren == leeg dict
{*()}== Lege tuple van waarden == Lege set

Het is echter niet dat je het kunt doen, betekent niet dat je dat zou moeten doen. Tenzij je een aantal sterke redenen hebt, is het beter om een ​​lege set expliciet te construeren, zoals:

a = set()

Prestaties:

De letterlijke is ~ 15% sneller dan de ingesteld -constructor (CPYTHON-3.8, 2019 PC, Intel (R) Core ( TM) I7-8550U CPU @ 1,80 GHz):

>>> %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)

… en voor de volledigheid, Renato Garcia’s frozensetvoorstel Op de bovenstaande uitdrukking is sommige 60% sneller !

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

NB: Zoals ctruedenopmerkte in opmerkingen, is {()}geeneen lege set. Het is een set met 1 element: lege tuple.


Antwoord 5

Het hangt ervan af of je de letterlijke tekst wilt gebruiken voor een vergelijking of voor een opdracht.

Als je een bestaande set leeg wilt maken, kun je de .clear()methode gebruiken, vooral als je wilt voorkomen dat er een nieuw object wordt gemaakt. Als je een vergelijking wilt maken, gebruik dan set()of controleer of de lengte 0 is.

voorbeeld:

#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

Antwoord 6

Toegevoegd aan de gekke ideeën: met Python 3 die unicode-ID’s accepteert, zou je een variabele ϕ = frozenset()(ϕ is U+03D5) kunnen declareren en in plaats daarvan gebruiken.


Antwoord 7

Er zijn enkele manieren om een lege set in Python te maken:

  1. Met behulp van set()methode
    Dit is de ingebouwde methode in python die een lege set in die variabele maakt.
  2. De methode clear() gebruiken (creatieve ingenieurstechniek LOL)
    Zie dit voorbeeld:

    sets={“Hallo”,”Hoe”,”zijn”,”Jij”,”Alle”}
    type(sets)  (Deze lijn
    Uitgang: ingesteld)
    sets.clear()
    print(sets)  (Deze regeluitvoer: {})
    type(sets)  (Deze lijn
    Uitgang: ingesteld)

Dus dit zijn 2 manieren om een lege set te maken.

Other episodes