ホームページ >バックエンド開発 >Python チュートリアル >Python 2.7 基本チュートリアル: 概要

Python 2.7 基本チュートリアル: 概要

黄舟
黄舟オリジナル
2016-12-24 17:11:391232ブラウズ

.. _tut-informal:

**************************************** ***** *********

Python の非公式入門 Python の概要

************************* *********** **********************

以下の例では、 or の有無によって入出力を区別しています

プロンプトの欠如 (``>>> ;`` および ``...``): 例を繰り返すには、プロンプトが表示される

以降に始まらない行をすべて入力する必要があります

プロンプト付きは、インタープリタからの出力です。例では、

行の 2 番目のプロンプトは、複数行のコマンドを

終了するために使用されることを意味することに注意してください。次の例では、入力と出力は大なり記号とピリオド プロンプト ( ``>>>`` および

```...``` ) アノテーションによって表されます。これらの例を再現したい場合は、インタプリタ プロンプトの後に、プロンプトを含まないコード行 (プロンプト

の後) を入力します。演習で遭遇したスレーブ プロンプトは、インタプリタが複数行のコマンドの終わりであることを認識できるように、最後に追加の空白行を入力する必要があることを意味していることに注意してください。

このマニュアルの例の多くは、対話型

プロンプトで入力されたものであっても、コメントを含んでいます。Python のコメントはハッシュ文字

``#`` で始まり、物理的な行の終わりまで続きます。コメントは、

行の先頭、またはその後の空白やコードに表示されますが、文字列リテラル内には表示されません。文字列リテラル内のハッシュ文字は単なるハッシュ文字です。コメントはコードを明確にするためのものであり、 Python によって解釈されないため、例を入力するときに省略される可能性があります

。このマニュアルの多くの例 (対話型プロンプトを含む例を含む) にはコメントが含まれています。

Python のコメントは # 文字で始まり、実際の行の終わりまで続きます (翻訳 - オリジナルの作成者は、エディターの自動改行の代わりに実際の改行を表すために

``物理行`` を使用しました)。コメントは行の先頭、または空白文字やコードの後に​​開始できますが、文字列内には表示されません。テキスト文字列内の #

文字は単に # を表します。コード内のコメントは Python によって解釈されません。例を入力するときは無視できます。

いくつかの例::

# これは最初のコメントです

SPAM = 1 = "# これはコメントではありません。"

.. _tut-calculator:

Python を電卓として使用する

==== ========================== ===================

いくつか試してみましょう簡単な Python コマンド。インタープリタを起動し、

プライマリ プロンプト ``>>>`` を待ちます (それほど時間はかかりません)

いくつかの簡単な Python コマンドを試してみましょう。インタプリタを起動し、メイン プロンプト ``>>>``

が表示されるまで待ちます (それほど時間はかかりません)。

.. _tut-numbers:

Numbers 数値

---------------

インタプリタは単純な計算機として機能します: 式を入力できます

値。式の構文は単純です。

演算子 ``+``、``-``、``*``、および ``/`` は、他のほとんどの言語

(たとえば、Pascal やC ); 括弧はグループ化に使用できます。例::

インタプリタは単純な計算機のように表されます。それにいくつかの式を入力すると、

値が返されます。式の構文は単純です。演算子 ``+``、``-``、``*``、および ``/`` は他の言語 (Pascal や C など) と同じです。グループ。例::

>>> 2+2

4

>>> # これはコメントです

... 2+2

4

>>> 2 +2 # コードと同じ行にコメント

4

>>> (50-5*6)/4

5

>>> # 整数の除算はフロアを返します。 :

... 7/3

2

>>> 7/-3

-3

等号 (``'='``) は、値を代入するために使用されます。その後、次の対話型プロンプトの前に no

result が表示されます::

変数に値を割り当てるには等号 ( ``'='`` ) が使用されます::

>>> width = 20

> ;>> height = 5*9

>>> width * height

900

値を複数の変数に同時に割り当てることができます::

複数の変数に同時に::

>>> x = y = z = 0 # ゼロ x、y、z

>>> 値) を使用しないと、

エラーが発生します::

変数は使用する前に「定義」 (割り当て) する必要があります。そうしないと、エラーが発生します::

> ;>> # 未定義の変数にアクセスしてみます

.. n

トレースバック (最新の呼び出しは最後):

ファイル ""、 の 1 行目

NameError:名前 'n' は定義されていません

混合型オペランドを持つ演算子は完全にサポートされています

整数のオペランドを浮動小数点に変換します

整数の計算と混合すると、浮動小数点数が完全にサポートされます。自動的に浮動小数点数に変換されます::

>>> 3 * 3.75 / 1.5

>>> 7.0 / 2

3.5

虚数もサポートされています。 ``j`` または ``J`` の接尾辞

を付けて書かれます。ゼロ以外の実数成分を持つ複素数は

``(real+imagj)`` として書かれるか、``complex'' で作成できます。 (real, imag)`` 関数。

::

複素数も取得できます。 サポートされています。接尾辞 ``j`` または ``J`` が付いた数値は虚数として扱われます。ゼロ以外の実部を持つ複素数

数は ``(real+imagj)`` として記述されるか、関数 ``complex(real, imag)`` を使用して作成できます::

>> > 1j * 1J

(-1+0j)

> 1j * 複素数(0,1)

(-1+0j)

> 3+1j*3

(3 +3j)

>>> (3+1j)*3

>>> (1+2j)/(1+1j)

(1.5+0.5 j)

複素数は常に 2 つの浮動小数点数、実数部と虚数部として表されます。複素数 *z* からこれらの部分を抽出するには、

``z.real`` とを使用します。 ``z.imag``. ::

複素数の実数部と虚数部は常に 2 つの浮動小数点数として記述されます。複素数 *z* から実数部と虚数部を抽出するには、 ``z.real`` と ``z.imag`` を使用します。 ::

>>> a=1.5+0.5j

>>> a.real

>>> a.imag

0.5

および整数 (:func:`float`、

:func:`int`、および :func:`long`) は複素数には機能しません --- 複素数を次の値に変換する正しい方法はありません

実数。 ``abs(z)`` を使用してその大きさ (float として) を取得するか、 ``z.real`` を使用して浮動小数点数と整数の間の実数部を取得します。関数 ( :func:`float` および :func:`int` および

:func:`long` ) は複素数では使用できません。複素数を実数

数に変換する正しい方法はありません。関数 ``abs(z)`` はその係数 (浮動小数点数) を取得するために使用され、関数 ``z.real`` はその実数部を取得するために使用されます::

>>>

>> ;> float(a)

トレースバック (最後の呼び出し):

ファイル ""、行 1、?

TypeError: complex を float に変換できません。 abs(z)

>>> a.real

3.0

>>> abs(a) # sqrt(a.real **2 + a .imag**2)

5.0

インタラクティブモードでは、最後に出力された式が変数

``_`` に割り当てられます。これは、Python を卓上電卓として使用している場合に、計算を続けるのがいくらか簡単です。例::

対話モードでは、最新の式の値が変数 ``_`` に割り当てられます。このようにして、デスクトップ電卓として使用でき、次のような連続計算に非常に便利です。

>>> 価格 * 税

12.5625

>>> 価格 + _

113.0625

>>> ラウンド(_, 2)

この変数は次のようにする必要がありますユーザーによって読み取り専用として扱われます。明示的に値を割り当てないでください。組み込み変数を魔法の動作でマスクする

同じ名前の独立したローカル変数を作成することになります。変数はユーザーにとって読み取り専用です。値を割り当てようとしないでください。同じ名前で別のローカル変数を作成するだけです。これにより、システムの組み込み変数の魔法の効果がブロックされます。

.. _tut-strings:

文字列 文字列

--------------

数値以外にも、Python は

いくつかの方法で表現できる文字列を一重引用符または二重引用符で囲むこともできます。 ::

数値と比較して、Python にはいくつかの異なる方法で渡すことができる文字列も用意されています。

一重引用符または二重引用符で識別できます::

>>> 'スパム卵'

'doesn/'t'

"doesn" t"

>>> "しません"

"しません"

>>> '「はい」と彼は言いました。

>>> "/"はい、/" 彼は言いました。"

「はい、」と彼は言いました。'

>>>彼女は言いました。" .'

文字列リテラルは、いくつかの方法で複数行にまたがることができます。継続行

は、行の最後の文字としてバックスラッシュを使用して、

次の行が行::

の論理的な継続であることを示します。文字列リテラルを複数の行に分割するには、いくつかの方法があります。行末にバックスラッシュを連続文字列として使用できます。これは、次の行が論理的にこの行の続きであることを示します。

hello = "これは、C で行うのと同じように、/n/

数行のテキストを含むかなり長い文字列です。/n/

行の先頭の空白が重要であることに注意してください。"

print hello

`/n` を使用して文字列に改行を埋め込む必要があることに注意してください。末尾のバックスラッシュに続く

改行は破棄されます。この例では、次の内容が出力されます

。 note はい、文字列に「/n」を記述する必要があります。末尾のバックスラッシュは無視されます。前回の

定例会議は次のように出力されます:

.. code-block:: text

これは、C で行うのと同じように

数行のテキストを含むかなり長い文字列です。

空白があることに注意してください。行の先頭は重要です。

または、文字列は一致する三重引用符のペアで囲むこともできます: ``"""`` または

``'''``。行末はそうする必要はありません。三重引用符を使用する場合はエスケープされますが、

それらは文字列に含まれます。三重引用符では、

をエスケープする必要はありません。文字列::

print """

使用法: thingy [オプション]

-H hostname 接続先のホスト名

"""

出力を生成します:

..コードブロック::text

使用量:thingy [options]

この使用法メッセージを再生します-hホスト名ホスト名に接続して、文字列をリテラルにする場合に接続します。 raw" 文字列、``/n`` シーケンスは改行に変換されません

が、行末のバックスラッシュとソース内の改行文字

は両方ともデータとして文字列に含まれます。例::

「生の」文字列を生成すると、`/n` シーケンスはエスケープされず、ソース コード内の行末のバックスラッシュ

と改行はデータの一部になります。文字列内にあるため、次の例::

hello = r"これは、C で行うのと同じように、/n/

数行のテキストを含むかなり長い文字列です。"

print hello

は次のように出力されます。

would print:

.. code-block:: text

これは、C で行うのと同じように、/n/

数行のテキストを含むかなり長い文字列です。

インタプリタは string の結果を出力します。操作は入力時と同じ方法で入力されます: 引用符内で、引用符やその他の面白い文字

をバックスラッシュでエスケープして、文字列に含まれる場合は

二重引用符で囲みます。一重引用符を使用し、二重引用符は使用しません。それ以外の場合は一重引用符で囲みます

(:keyword:`print` ステートメントについて説明します

)。

後で、引用符やエスケープなしで文字列を記述するために使用できます。)

インタプリタは、入力されたときと同じ方法で文字列操作の結果を出力します。つまり、値を正確に表示するために、バックスラッシュでエスケープされた興味深い文字を含む括弧として出力されます。文字列に一重引用符が含まれているが二重引用符が含まれていない場合は、二重引用符でマークされます。それ以外の場合は一重引用符で識別されます。 (後で紹介する

:keyword:`print` ステートメントは、識別やエスケープを行わずに文字列を出力できます。)

文字列は ``+`` 演算子で連結 (接着) でき、

``*` で繰り返すことができます。 `::

文字列は ``+`` 演算子によって接続 (接着) でき、``*``::

>>> word = 'Help' + 'A によって繰り返すことができます。 '

>>> 単語

'HelpA'

>>> '<' + 単語*5 + '>'

''

Tアルス上の最初の

行は ``word = 'Help' 'A'`` と書くこともできます; これは 2 つのリテラルでのみ機能し、任意の文字列式では機能しません::

2 つの隣接する文字列テキストは自動的に結合されます。コードの前の行は

``word ='Help' 'A'`` のように記述することもできます。これは 2 つの文字列テキストにのみ使用され、文字列式には使用できません。 。

>>> 'str' 'ing' # <- これはOKです

'string'

>>> 'str'.strip() + 'ing' # <- これ大丈夫です

'string'

>>> 'str'.strip() 'ing' # <- これは無効です

ファイル ""、1 行目、?

' Str'.Strip () 'Ing'

^

構文エラー: 無効な構文

文字列には添字 (インデックス付け) が可能です。C と同様に、文字列の最初の文字

には添字 (IND EX) 0 があります。個別の文字タイプはありません。文字は、

単にサイズ 1 の文字列です。

*スライス表記* を使用して部分文字列を指定できます。::

文字列をインターセプトすることもできます。 (検索)。 C と同様に、文字列の最初の文字には 0 のインデックスが付けられます。独立した文字タイプはありません。文字は長さ 1 の文字列です。 Icon と同様に、

*スライス アノテーション* メソッドを使用して文字列、つまり 2 つのインデックスで分割されたコピーをインターセプトできます。 ::

>>> 単語[4]

'A'

>>> 単語[0:2]

'彼'

>>> 4]

'lp'

スライス インデックスには便利なデフォルト値があります。省略された最初のインデックスはデフォルトでゼロになり、

省略された 2 番目のインデックスはスライスされる文字列のサイズになります。::

インデックス スライスにはデフォルト値を設定できます。スライスするときに、最初のインデックスが無視される場合はデフォルトの 0 になり、2 番目の

インデックスが無視される場合はデフォルトの文字列の長さになります。 (実際には、スライス ステップ サイズを表す 3 番目のパラメータがあります。デフォルトは

1 で、完全なスライス操作は word[2:4:1] - Translator) ::

>>> ; word [:2] # 最初の 2 文字

'He'

>>> word[2:] # 最初の 2 文字以外のすべて

'lpA'

C の文字列とは異なり、Python の文字列文字列内のインデックス付き

位置に代入すると、エラー::

が発生します。C 文字列とは異なり、Python 文字列は不変です。文字列リテラルのインデックスに値を割り当てるとエラーが発生します::

>>> word[0] = 'x'

トレースバック (最新の呼び出し最後):

ファイル "

TypeError: オブジェクトは項目の割り当てをサポートしていません

>>> word[:1] = 'Splat'

トレースバック (最新の呼び出しは最後):

ファイル "< ; stdin>"、行 1、?

TypeError: オブジェクトはスライス割り当てをサポートしていません

ただし、結合されたコンテンツを使用して新しい文字列を作成するのは簡単で効率的です::

ただし、テキスト コンテンツを結合して新しいテキストを生成することは、シンプルで効率的::

>>> 'x' + word[1:]

'xelpA'

>>> 'Splat' + word[4]

'SplatA'

これはスライス操作の便利な不変式です: ``s[:i] + s[i:]`` は ``s`` と等しいです。

::

スライス操作には便利な不変式があります: ` `s[:i] + s[i:]`` は ``s`` と同じです。 ::

>>> 単語[:2] + 単語[2:]

'ヘルプA'

>>> 単語[:3] + 単語[3:]

'ヘルプA'

縮退スライスのインデックスは適切に処理されます。大きすぎるインデックスは

文字列サイズに置き換えられ、下限よりも小さい上限は空の文字列を返します

::

縮退スライスの取得は適切に行われます。上限が大きすぎる場合は、テキストの長さに置き換えられ、上限が下限より小さい場合は、空の

文字列が返されます。 ::

>>> 単語[1:100]

'elpA'

>>> 単語[10:]

>>> 1]

''

インデックスは、右から数え始めるために負の数にすることができます。 例::

インデックスは、右端から数え始めるように負の数にすることができます。例::

>>> 単語[-1] # 最後の文字

'A'

>>> 単語[-2] # 最後の 1 文字

' p '

>>> word[-2:] # 最後の 2 文字

'pA'

>>> word[:-2] # 最後の 2 文字以外のすべて

' Hel '

ただし、-0 は実際には 0 と同じであるため、右から数えることはできないことに注意してください。

::

しかし、-0 は実際には 0 と同じであるため、右から数えることはできないことに注意してください。右! !

>>> word[-0] # (-0 は 0 に等しいため)

'H'

範囲外の負のスライス インデックスは切り捨てられますが、

single-要素 (スライス以外) のインデックス::

負のインデックス スライスは、境界を越える場合は切り捨てられます。単一要素 (スライス以外) の取得には使用しないでください::

>>> -100:]

'HelpA'

>>> word[-10] # error

トレースバック (最後の呼び出し):

ファイル ""、行 1、?

IndexError: 文字列インデックスが範囲外です

スライスの仕組みを思い出す方法の 1 つは、インデックスが * 文字間* を指し、最初の文字の左端に 0 の番号が付けられていると考えることです。

次に、文字列の右端*n* 文字の文字列の最後の文字には

インデックス *n* があります。例::

スライスの仕組みを簡単に思い出す方法があります。スライスが 2 つの文字

** の間にある場合のインデックスです。左側の最初の文字のインデックスは 0 で、長さ *n* の文字列の最後の文字には *n* の右側の境界のインデックスがあります。例::

+---+---+---+---+---+

| A |

+---+--- + ---+---+---+

0 1 2 3 4 5

-5 -4 -3 -2 -1

数字の最初の行はインデックス 0 の位置を示します...文字列内の 5;

2 行目は、対応する負のインデックスを示します。*i* から

*j* までのスライスは、それぞれ *i* と *j* というラベルが付けられたエッジ間のすべての文字で構成されます

。 text の最初の行の数字は、文字列内のインデックス ポイント 0...5 を示します。 2 行目は、対応する負のインデックスを示します。

スライスは、*i* から *j* までの 2 つの数値境界の間にあるすべての文字です。

非負のインデックスの場合、両方のインデックスが範囲内にある場合、スライスの長さは

インデックスの差です。たとえば、``word[1:3]`` の長さは

2.

です。

非負のインデックスの場合、上部と下部の両方が範囲内にある場合、スライスの長さはインデックスとは異なります。たとえば、

``word[1:3]`` は 2 です。

組み込み関数:func:`len` は文字列の長さを返します::

組み込み関数:func:`len` は文字列の長さを返します::

>>> s = 'supercalifragilisticexpialidocious'

>>> len(s)

34

.. see also::

:ref:`typesseq`

文字列、および次のセクションで説明する Unicode 文字列は次のとおりです。

* シーケンス タイプ* の例と、そのようなタイプでサポートされる一般的な操作

をサポートします。 :ref:`string-methods`

文字列と Unicode 文字列の両方は、

基本的な変換と検索のための多数のメソッドをサポートします。

:ref:`new-string-formatting`

:meth:`str.format` を使用した文字列の書式設定に関する情報が説明されています

ここに

:ref:`string-formatting`

古い文字列と Unicode 文字列が ``%`` 演算子の左側のオペランドである場合に呼び出される書式設定操作

については、こちらで詳しく説明します。

.. _tut-unicodestrings:

Unicode Strings Unicode text

----- ---- -------------------

.. セクション著者:: Marc-Andre Lemburg

Python 2.0 から始める新しいプログラマーは、テキスト データを保存するためのデータ型、つまり Unicode オブジェクトを使用して、Unicode データ (http://www.unicode.org/ を参照) を保存および操作することができ、既存のデータ

とうまく統合できます。

文字列オブジェクト。必要に応じて自動変換を提供します。

Python 2.0 以降、プログラマはテキスト データを保存するための新しいタイプ、Unicode

オブジェクトを使用できるようになりました。 Unicode データの保存と維持に使用でき (

http://www.unicode.org/ を参照)、既存の文字列オブジェクトと適切に統合され、必要に応じて自動変換を提供します。

Unicode には、現代および古代のテキストで使用されるすべての

スクリプトのすべての文字に 1 つの序数を提供できるという利点があります。以前は、テキストは通常​​、コード

ページにバインドされていました。序数をスクリプト文字にマッピングすると、特に国際化に関して非常に混乱が生じます (通常は

``i18n`` --- ``'i''`` + 18 文字 + ``'n') Unicode は、すべてのスクリプトに対して 1 つのコード ページを定義することで、これらの問題を解決します

。Unicode の利点は、現代または古代にかかわらず、使用されているすべての文字に

を提供することです。番号。以前は、書記体系内の文字の順序は 256 しかありませんでした。コードページ境界によるマッピング。テキストはマッピング テキスト システムのコード ページにバインドされます。これは、ソフトウェアが国際化されている場合に特に問題になります (通常、「i18n」 - 「i」 + 18 文字 + 「n」 と記述されます)。 Unicode

は、すべての書記体系に対して個別のコード ページを設定するという問題を解決します。

Python で Unicode 文字列を作成するのは、通常の文字列を作成するのと同じくらい簡単です

strings::

Python で Unicode 文字列を作成するのは、通常の文字列を作成するのと同じくらい簡単です::

>>> u'Hello World !'

u'Hello World !'

引用符の前の小さな 'u' は、文字列に特殊文字を含める場合、

Unicode 文字列を作成する必要があることを示します。これは、Python *Unicode-Escape* エンコーディングを使用して行うことができます。次の

例は、その方法を示しています。::

引用符の前の「u」は、Unicode 文字列を作成することを意味します。文字列に特殊文字を含めたい場合は、Python の *Unicode-Escape* (Unicode エスケープ - トランスレーター) を使用できます。

以下の例を参照してください::

>>> u'Hello/u0020World !'

u'Hello World !'

専門家向けに、通常の文字列の場合と同様の raw モードもあります。不均等な Python で

*Raw-Unicode-Escape* エンコーディングを使用するには、開始引用符の前に「ur」を付ける必要があります。不均等な場合のみ、上記の ``/uXXXX``

変換が適用されます。 small

'u' の前にあるバックスラッシュの数。特に、通常の文字列と同様に、Unicode 文字列にもプリミティブ モードがあります。引用符の前に

"ur" を追加すると、Python は *Raw-Unicode-Escape* エンコーディング (生の Unicode エスケープ - トランスレーター

) を使用します。接頭辞「/u」が付いた値がある場合、「/uXXXX」としてのみ表示されます。 ::

>>> ur'Hello/u0020World !'

u'Hello World !'

>>> ur'Hello//u0020World !'

u'Hello//// u0020World !'

raw モードは、正規表現で必要になる

など、たくさんのバックスラッシュを入力する必要がある場合に最も役立ちます。

たくさんのバックスラッシュを入力する必要がある場合、raw モードが最も便利です。正規表現では

は式内でほぼ必須です。

これらの標準エンコーディングとは別に、Python は既知のエンコーディングに基づいて Unicode 文字列を作成する他の方法

、文字列のメソッドの完全なセットを提供します。

..index::builtin: unicode

組み込み関数 :func:`unicode` は、登録されているすべての Unicode

コーデック (COder および DECoder) へのアクセスを提供します。

変換できるコーデックは、*Latin-1*、*ASCII*、*UTF-8*、および *UTF-16* です。後の 2 つの

は、各 Unicode 文字を 1 つ以上の

バイトに格納する可変長エンコーディングです。デフォルトのエンコーディングは通常 ASCII に設定されており、0 から 127 の範囲の文字は通過し、他の文字はエラーで拒否されます。

Unicode 文字列が印刷されるとき、ファイルに書き込まれるとき、または

で変換されるとき。 :func:`str` では、このデフォルトのエンコーディングを使用して変換が行われます。 ::

組み込み関数 :func:`unicode` は、登録されているすべての Unicode エンコーディング (COder および

DECoder) を使用できます。ご存知のとおり、*Latin-1*、*ASCII*、*UTF-8*、および *UTF-16* エンコーディングは相互に変換できます (Latin-1 は、ラテン語の記号の小さなセットを表します。これは同じです) ASCII ベースとして)

これは一貫していますが、東部言語の文字の膨大なセットを表すために使用することはできません - 翻訳者)。後の 2 つは、各 Unicode 文字を 1 バイト以上として格納する可変長エンコーディングです。通常、デフォルトのエンコーディングは ASCII です。この

エンコーディングは 0 から 127 の範囲のエンコーディングを受け入れます。それ以外の場合はエラーが報告されます。 Unicode 文字列をファイルに印刷または書き込むとき、または :func:`str` を使用して変換するとき、変換操作ではこれがデフォルトのエンコーディングとして使用されます。 ::

>>> u"abc"

u'abc'

>>> str(u"abc")

'abc'

>>> ü"

u'/xe4/xf6/xfc'

>>> str(u"ü")

トレースバック (最新の呼び出し最後):

ファイル ""、行 1 、?

UnicodeEncodeError: 'ascii' コーデックは位置 0-2 の文字をエンコードできません: ordinal not in range(128)

特定のエンコーディングを使用して Unicode 文字列を 8 ビット文字列に変換するには、

Unicodeオブジェクトは 1 つの引数を取る :func:`encode` メソッドを提供します。 ::

エンコーディングには、特定の文字列を使用して 8 ビット文字として書き込むために、小文字の名前が優先されます。エンコーディング文字列、Unicode オブジェクトは、エンコーディング名をパラメーターとして受け入れる

:func:`encode` メソッドを提供します。エンコーディング名は小文字にする必要があります。 ::

>>> u"ü".encode('utf-8')

'/xc3/xa4/xc3/xb6/xc3/xbc'

特定のエンコーディングのデータがある場合、そこから対応する

Unicode 文字列を生成したい場合は、

エンコーディング名を 2 番目の引数として指定した :func:`unicode` 関数を使用できます。Unicode 文字列の場合は、 :func:`unicode`

を使用できます。

関数。エンコーディング名を 2 番目のパラメーターとして受け取ります。 ::

>>> unicode('/xc3/xa4/xc3/xb6/xc3/xbc', 'utf-8')

u'/xe4/xf6/xfc'

.. _tut- lists:

Lists List

----------

Python は、他の

値をグループ化するために使用される多数の *複合* データ型を認識します。最も汎用性の高いのは *list* です。角かっこ内の

カンマ区切りの値(項目)のリストとして記述することができます。リスト項目はすべて同じ型である必要はありません::

Pythonには他の値を分割するための*複合*データ型があります。 。最も一般的なのは *list* (列のリスト) で、括弧で囲まれたカンマ区切りの値のリストとして記述できます。リストの要素は同じ型である必要はありません。 ::

>>> a = ['スパム', '卵', 100, 1234]

>>> a

['スパム', '卵', 100, 1234]

文字列インデックスと同様に、リストインデックスも 0 から始まり、リストはスライスしたり

連結したりすることができます::

文字列インデックスと同様に、リストは 0 から開始して取得できます。リストはスライスして連結できます::

>>> a[0]

'スパム'

>>> a[3]

1234

>>> a[ -2]

100

>>> a[1:-1]

['卵', 100]

>>> a[:2] + ['ベーコン' , 2 *2]

['スパム', '卵', 'ベーコン', 4]

>>> 3*a[:3] + ['Boo!']

['スパム' , ' 卵', 100, 'スパム', '卵', 100, 'スパム', '卵', 100, 'Boo!']

すべてのスライス操作は、要求された要素を含む新しいリストを返します

という意味です。次のスライスはリスト *a*::

の浅いコピーを返します。すべてのスライス操作は、計算された要素を含む新しいリストを返します。これは、次のスライス操作

がリスト *a* ::

の浅いコピーを返すことを意味します。

>>> a[:]

['spam', 'eggs', 100, 1234]

*不変*である文字列とは異なり、リストの個々の

要素を変更することが可能です。 :

*不変* 文字列とは異なり、リストでは要素を変更できます::

>>> a

['spam', 'eggs', 100, 1234]

>>> ; [2] = a[2] + 23

>>> a

['spam', 'eggs', 123, 1234]

スライスへの代入も可能で、サイズを変更することもできます

リストの変更または完全なクリア::

この操作は、リストのサイズを変更したり、リストをクリアしたりすることもできます::

>>> # 一部の項目を置き換えます:

。 .. a[0:2] = [1, 12]

>>> a

[1, 12, 123, 1234]

>>> # 一部を削除します:

.. . a[0:2] = []

>>> a

[123, 1234]

>>> # いくつかを挿入します:

... a[1:1] = ['blech', 'xyzzy']

>>> a

[123, 'blech', 'xyzzy', 1234]

>>> にそれ自体を挿入します始まり

>>> a[:0] = a

>>> a

[123, 'ブレッチ', 'xyzzy', 1234, 123, 'ブレッチ', 'xyzzy' [ ]

組み込み関数 :func:`len` はリストにも適用されます::

組み込み関数 :func:`len` はリストにも適用されます::

>>> ['a ', 'b', 'c', 'd']

>>> len(a)

4

のため、リストをネストする (他のリストを含むリストを作成する) ことが可能です。

例::

は、ネストされたリスト (他のリストを含むリストの作成) を許可します。例::

>>> q = [2, 3]

>>> q, 4]

>>> len(p)

>>> p[1]

[2, 3]

>>> [0 ]

2

>>> p[1].append('xtra') # セクション 5.1 を参照

>>> p

[1, [2, 3, 'xtra '] , 4]

>>> q

[2, 3, 'xtra']

最後の例では、``p[1]`` と ``q`` が実際に参照していることに注意してください。同じ

オブジェクトに! *オブジェクトのセマンティクス*については後ほど説明します。

最後の例では、``p[1]`` と ``q`` が実際には同じオブジェクトを指していることに注意してください。

の後半で *オブジェクト セマンティクス* で議論を続けます。

.. _tut-firststeps:

プログラミングへの第一歩

================================ == ============

もちろん、2 つと 2 つ

を加算するよりも複雑なタスクに Python を使用することもできます。たとえば、* フィボナッチ* の最初の部分列を書くことができます。

シリーズは次のとおりです::

もちろん、Python を使用して、2 プラス 2 よりも複雑なタスクを完了することもできます。たとえば、次のように *Fibonacci* 部分列を生成する

プログラムを作成できます::

>>> # Fibonacci series:

... # 2 つの要素の合計が next

を定義します。 . a, b = 0, 1

>>> while b

... a, b = b, a+b

1

1

2

3

5

8

この例では、いくつかの新しい機能が紹介されています。

この例では、いくつかの新しい機能が紹介されています。

* 最初の行には *複数の代入* が含まれています: 変数 ``a`` と ``b``

は同時に新しい値 0 と 1 を取得します。最後の行では、これが再び使用されています

右側の式

は、代入が行われる前にすべて評価される

ことを示しています。最初の行には *multiple が含まれています。代入 *: 変数 ``a`` と ``b`` は同時に新しい値 0

を取得しました

と1 .最後の行が再度使用されます。このデモでは、変数の割り当ての前に、右側で

の計算が最初に完了します。右側の式は左から右に評価されます。

* :keyword:`while` ループは、条件 (ここでは ``b < 10``)

が true である限り実行されます。Python では、C と同様、ゼロ以外の整数値はすべて true です。ゼロは

false です。条件は文字列またはリスト値でもよく、実際には任意のシーケンスです。

長さがゼロでないものはすべて true、空のシーケンスは false です。この例で使用されているテスト

は単純です。標準の比較演算子

は、C と同じように記述されます: ``<`` (より小さい)、``>`` (より大きい)、``==``

(等しい) 、「<=」(以下)、「>=」(以上)

、「!=」(等しくない)

条件(ここでは``b

Python では、C と同様に、ゼロ以外の整数はすべて true、0 は false です。条件は文字列またはリストにすることもできますが、実際には任意のシーケンスにすることができます。ゼロ以外の長さはすべて true で、空の列は false です。この例のテストは単純な比較です。標準の比較演算子は C の場合と同じです:

``<`` (より小さい)、``>`` (より大きい)、``==`` (等しい)、``<`` =`` (未満など

≥)、``>=`` (以上)、および ``!=`` (等しくない)。

* ループの *本体* は *インデント* されています。インデントは Python のステートメントをグループ化する方法です

Python にはインテリジェントな入力行編集

機能が (まだ) 提供されていないため、タブを入力するか、または入力する必要があります。インデントされた各行にはスペースを入れてください。

練習では、テキスト エディタを使用して Python のより複雑な入力を準備します。

ほとんどのテキスト エディタには、複合ステートメントを対話的に入力する

必要があります。

完了を示す空白行が続きます (パーサーは最後の行がいつ入力されたかを推測できないため)。

基本ブロック内の各行は同じ量だけインデントする必要があることに注意してください。

Loop*body* *インデント*: インデントは、ステートメントを編成する Python の方法です。

Python は (まだ) 統合された行編集を提供していないため、インデントされた各行に TAB

またはスペースを入力する必要があります。実際には、複雑な Python プログラムを入力するためのテキスト エディタを見つけることをお勧めします。ほとんどのテキスト エディタには自動インデントが備わっています。複合ステートメントを対話的に入力する場合は、終了を示すために最後に空白行を入力する必要があります (インタプリタは、入力した行が最後の行であることを推測できないため)。同じステートメント ブロック内にステートメントを入力する必要があることに注意してください。同じ量の空白によってインデントされます。

* :keyword:`print` ステートメントは、指定された式の値を書き込みます

。(電卓の例で前に説明したように) 単に書きたい式を書き込むのとは異なります。複数の式

と文字列を処理する方法で、文字列は引用符なしで出力され、項目の間にスペースが挿入される

ので、次のように整形できます::

キーワード:キーワード:`print` ステートメントの出力指定された式の値。これは、複数の式と文字列を必要な文字列に出力することを制御します (前の電卓の例で行ったように)。文字列は引用符なしで出力され、2 つのサブ項目の間にスペースが挿入されるので、次のように非常に美しい形式にすることができます::

>>> i = 256*256

>>> ;「I ais」の印刷、i

iは65536

出力後に新しいラインを回避します:: +b

completed ...

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

最後の行が

でなかった場合、インタプリタは次のプロンプトを出力する前に改行を挿入することに注意してください。

ここで、最後の行が完全に出力されていない場合、インタプリタ

は次のプロンプトを出力する前に改行を挿入することに注意してください。

上記は Python 2.7 の基本チュートリアルの概要です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。