私のようなものを見た:Python:set()内の理解は何を意味しますか?
set(x for x in [1, 2, 3])
を私はx for x in [1, 2, 3]
が理解ですけど、x for x in [1, 2, 3]
自体が無効であるので、私は、そのための有効な文法を見つけることができません。
私のようなものを見た:Python:set()内の理解は何を意味しますか?
set(x for x in [1, 2, 3])
を私はx for x in [1, 2, 3]
が理解ですけど、x for x in [1, 2, 3]
自体が無効であるので、私は、そのための有効な文法を見つけることができません。
call ::= primary "(" [argument_list [","] | comprehension] ")"
comprehension ::= expression comp_for
チェック:
set(x for x in [1, 2, 3])
set
はx
がexpression
で、for x in [1, 2, 3]
それはジェネレータ式だcomp_for
理解度に基づいてセットを作成することです。例:結果がセットになります
a = set(x for x in [1, 2, 3])
print(a)
:
そうしないa = set([1, 2, 3])
:上記の例では
{1, 2, 3}
、ロジックであることを起こるするように簡略化することができます全く理解する必要がある
で、primary
です。彼らは通常、括弧で囲まれているが、式は関数呼び出しの唯一の引数である場合には括弧を省略することができます。
>>> generator = (x for x in [1, 2, 3])
>>> generator.next()
1
>>> set(generator)
set([2, 3])
ジェネレータオブジェクトは、彼らが値を一つずつを生産、反復処理することができます。ここでのリスト理解を使用する場合と比較すると、中間リストオブジェクトを作成する必要がないという利点があります(3つではなく100万の要素がある場合はさらに重要です)。
ドキュメント:理解に基づいてhttps://docs.python.org/2/reference/expressions.html#generator-expressions
実際に説明してくれてありがとうございます*なぜ*ジェネレータ式のかっこは省略できます。 – SiHa
Pythonのセット。ストリング
>>> address = set(city for city in ["Paris", "Paris", "London","Berlin","Paris","Paris"])
>>> print address
set(['Paris', 'Berlin', 'London'])
>>> type(address)
<type 'set'>
(x for x in [1, 2, 3])
付きリストの例は、単一の値に反復可能な入力を低減Generator Expressions
あります。
>>> (x for x in [1, 2, 3])
<generator object <genexpr> at 0x7f1b23bea8c0>
>>> type(x for x in [1,2,3])
<type 'generator'>
これはset
クラスのコンストラクタと一致します。
def __init__(self, seq=()): # known special case of set.__init__
"""
set() -> new empty set object
set(iterable) -> new set object
Build an unordered collection of unique elements.
# (copied from class doc)
"""
のPython 3がでありセットそのような理解:
{x for x in [1, 2, 3]}
だから、Pythonの3でもうset(x for x in [1, 2, 3])
を必要としません。
https://docs.python.org/3/reference/expressionshtml#generator-expressions – vaultah