これはおそらく最後の「簡単なレッスン」であることにも注意する必要があります。次に、「トップ」を通過したプログラミングのすべての側面を掘り下げて、さらに詳しく説明していきます。
一般的に、興味のない人-次のニュースを読んで、残りは読んでください 。
初心者向けのPython。 第3章 「リスト、タプルなど」
タプル。
タプルは、異なるオブジェクトの不変のシーケンスを表すために使用されます。 それらは通常括弧で囲まれていますが、あいまいさが生じない場合は、括弧を省略できます。
>>> t =(2、2.05、 "Hello") >>> t (2、2.0499999999999998、「こんにちは」) >>>(a、b、c)= t >>> a、b、cを印刷 2 2.05こんにちは >>> z、y、x = t >>> z、y、xを印刷 2 2.05こんにちは >>> a = 1 >>> b = 2 >>> a、b = b、a >>> a、bを印刷 2 1 >>> x = 12、 >>> x (12、)
例からわかるように、タプルは代入演算子の左側で使用することもできます。 代入演算子の左側のタプルからの値は、右側の同様の要素に関連付けられています。 この事実は、変数の一括初期化と関数からの複数の値の同時返還などの素晴らしい機会を提供します。 最後の例は、1つの要素からタプルを作成する方法を示しています(多くの場合、シングルトンと呼ばれます)。
リスト
Pythonには、用語の伝統的な意味での配列はありません。 代わりに、リストは同種の(だけでなく)オブジェクトを格納するために使用されます。 それらは3つの方法で定義されます。
単純なリスト:
>>> a = [2、2.25、 "Python"] >>> a [2、2.25、 'Python']
文字列をリストに変換
>>> b =リスト(「ヘルプ」) >>> b ['h'、 'e'、 'l'、 'p']
リストの包含を使用した作成。 この場合、0〜19のすべての奇数のキューブを使用します。この構文については、別のレッスンを行う予定です。
>>> c = [x ** 3(x%2 == 1の場合、範囲(20)のxに対して)] >>> c [1、27、125、343、729、1331、2197、3375、4913、6859]
リストを操作するために、いくつかの演算子と関数が定義されています:
len(s)シーケンス長s
x in sシーケンス項目が属するかどうかをチェックします。 Pythonの新しいバージョンでは、サブストリングがストリングに属していることを確認できます。 TrueまたはFalseを返します
x in not s = not x in s
s + s1シーケンスの連結
s * nまたはn * s n回繰り返されるsのシーケンス。 n <0の場合、空のシーケンスが返されます。
s [i] i <0の場合、sまたはlen(s)+ i番目のi番目の要素を返します
s [i:j:d]シーケンスsのiからjまでのステップdのスライスは、以下で考慮されます。
min(s)最小の要素s
最大(s)最大要素s
s [i] = xリストsのi番目の要素はxに置き換えられます
s [i:j:d] = t iからjへのスライス(dの増分)は(list)tに置き換えられます。
del s [i:j:d]シーケンスからスライス要素を削除する
さらに、リストには多くのメソッドが定義されています。
append(x )シーケンスの最後にアイテムを追加します
count(x) xと等しい要素の数をカウントします
extend(s)シーケンスsをシーケンスの最後に追加します
index(x) s [i] == xとなるような最小のiを返します。 sにxが見つからない場合、ValueError例外を発生させます
insert(i、x)要素iをi番目のスペースに挿入します
pop(i) i番目の要素を返し、シーケンスから削除します
reverse() s要素の順序を逆にします
sort([cmpfunc]) s の要素をソートします。 独自の比較関数cmpfuncがある場合があります
タプルをリストに変換するために、逆の操作のためのリスト関数、タプルがあります。
リストのインデックス付けとサブシーケンスの割り当てについては、再度個別に言及する必要があります(このメカニズムは文字列でも同様に機能します)。 要素を取得するには、要素インデックスが配置されている角括弧を使用します。 要素には最初から番号が付けられます。 負のインデックス値は、最後から項目を示します。 リストの最後(行)の最初の要素のインデックスは-1です。
>>> s = [0、1、2、3、4] >>> s [0]、s [-1]、s [3]を印刷します 0 4 3 >>> s [2] = -2 >>>プリントs [0、1、-2、3、4] >>> del s [2] >>>プリントs [0、1、3、4]
スライスを使用すると事態はさらに複雑になります。 Pythonでシーケンスのスライスを取得するには、要素の数ではなく、要素間の「ギャップ」の数を示すのが一般的です。 シーケンスの最初の要素の前、ギャップのインデックスは0、2番目の前-1などになります。 負の値は、行末から要素をカウントします。
一般に、スライスは次のように記述されます。
リスト[開始:終了:ステップ]
デフォルトでは、スライスの先頭は0、スライスの末尾はlen(リスト)、ステップは1です。ステップが指定されていない場合、2番目の文字「:」は省略できます。
スライスを使用すると、サブセットを指定して、長さゼロであってもリストを別のリストに挿入できます。 これは、厳密に定義された位置にリストを挿入するのに便利です。
>>> l =範囲(12) >>> l [0、1、2、3、4、5、6、7、8、9、10、11] >>> l [1:3] [1、2] >>> l [-1:] [11] >>> l [:: 2] [0、2、4、6、8、10] >>> l [0:1] = [-1、-1、-1] >>> l [-1、-1、-1、1、2、3、4、5、6、7、8、9、10、11] >>> del l [:3] >>> l [1、2、3、4、5、6、7、8、9、10、11]
辞書
辞書(ハッシュ、事前定義済み配列)は、key:value要素を格納するように設計された可変データ構造です。 すべてが例によって簡単に示されています。
ハッシュを作成します。
>>> h1 = {1: "one"、2: "two"、3: "three"} >>> h2 = {0: "zero"、5: "five"} >>> h3 = {"z":1、 "y":2、 "x":3} #キーと値のペアで循環 >>>キーの場合、h1.items()の値: ...印刷キー、「」、値 ... 1つ 2 2 3 3 #キーサイクル >>> h2.keys()のキー: ...印刷キー、 ""、h2 [キー] ... 0ゼロ 5 5 #値で循環 >>> h3.valuesのv(): ...印刷v ... 2 3 1 #別のハッシュからアイテムを追加する >>> h1.update(h3) #ハッシュ内のペアの数 >>> len(h1) 6
タイプファイル
このタイプのオブジェクトは、外部データを操作するように設計されています。 ほとんどの場合、このオブジェクトはディスク上のファイルに対応していますが、これは常にそうではありません。 ファイルオブジェクトはメインメソッドをサポートする必要があります:read()、write()、readline()、readlines()、seek()、tell()、close()など。
次の例は、ファイルのコピーを示しています。
f1 =オープン( "file1.txt"、 "r") f2 =オープン( "file2.txt"、 "w") f1.readlines()の行の場合: f2.write(行) f2.close() f1.close()
(この例は他の多くの方法で書くことができ、その多くは最適性の点で非常に異なっていますが、これは別の議論のトピックでもあります)
原則として、ほとんどの関数は、ファイルタイプオブジェクトまたは同じメソッドを持つ他のオブジェクトが渡されるかどうかにはまったく関係ありません。 したがって、上記の例を非常に簡単に変更して、インターネットからファイルをダウンロードし、その最初の行を次のコードに置き換えることができます。
urllibをインポートする f1 = urllib.urlopen( "http://python.onego.ru")
タスク:
-urls.txtファイルからURLの「一括ダウンロード」プログラムを開発する
-指定されたURLのページとそのすべてのコンテンツをダウンロードするプログラムを開発します。
-入力時に任意のリストを受け取ったプログラムを作成し、そこからすべての重複要素を削除します。