0

python はどのようにタプル オブジェクトを初期化しますか? たとえば、次のようなオブジェクトを作成すると

>>> object = ('Shark')

オブジェクトのタイプを次のように示します str

>>> type(object)
<type 'str'>

一方、次のようなオブジェクトを作成すると

>>> object = ('Shark',)

そのタイプをtuple

>>> type(object)
<type 'tuple'>

なんでそうなの ??pythonはタプル、strオブジェクトをどのくらい正確に作成/初期化しますか?

4

3 に答える 3

3

ドキュメントから:

特別な問題は、0 個または 1 個のアイテムを含むタプルの構築です。構文には、これらに対応するためのいくつかの特別な癖があります。空のタプルは、括弧の空のペアで構成されます。1 つの項目を持つタプルは、値の後にカンマを付けることで作成されます(1 つの値を括弧で囲むだけでは十分ではありません)。

したがって、末尾がなければ、,これら 2 つのステートメントは同等です。

>>> x = 1
>>> x
1
>>> x = (1)
>>> x
1

しかし、これらはすべてtuplesです:

>>> x = 1,       #or (1,)
>>> x
(1,)
>>> x = 1, 2, 3  #or (1, 2, 3)
>>> x
(1, 2, 3)
于 2013-10-18T06:00:41.780 に答える
1

二重引用符または単一引用符で囲まれたものはすべて、Python では文字列として扱われます。PHP と同様に、二重引用符で囲まれた文字列内の変数は実際に評価され、単一引用符はそのまま表示されます。

左括弧と右括弧で囲まれたものはすべてタプルとして扱われます。ただし、タプルに 1 つのオブジェクトしか配置されていない場合は、オブジェクトの型として扱われます。例えば:

>>> a = (9)
>>> type(a)
<class 'int'>
>>> 
>>> a = ([9])
>>> type(a)
<class 'list'>
>>> 
>>> a = ('hello!')
>>> type(a)
<class 'str'>
>>> 
>>> a = {'a':1, 'b':1}
>>> type(a)
<class 'dict'>
>>> 

オブジェクトの長さは問題ではないことに注意してください (タプル自体ではなく、タプル内に配置されたオブジェクト)。

ここで、タプル内のオブジェクトの後にコンマを置くと、Python は別のオブジェクトが来ると想定し、それをタプルであるかのように扱い、エラーを発生させません。また、Python がさまざまなものを格納するために使用するデフォルト オブジェクトもタプルであることに注意してください。つまり、式を括弧で囲まなくても、デフォルトでそれが行われます。

>>> a = 9, 8, 7
>>> a
(9, 8, 7)
>>> type(a)
<class 'tuple'>
>>> 
>>> a = 'Hello', 'Python', 'Typle'
>>> a
('Hello', 'Python', 'Typle')
>>> type(a)
<class 'tuple'>
>>> 
于 2013-10-18T06:49:16.310 に答える
1

括弧で囲まれた式は、まさにその式です (数学式の括弧のようなものです(2+2)*4)。

ただし、末尾にコンマを追加するか、コンマで区切られた括弧内に複数の要素がある場合は、タプルになります。また、 と書くと空のタプルが得られます()

于 2013-10-18T06:01:53.410 に答える