[Python] Python シリーズ チュートリアル -- Python3 の基本データ型 (5)

序文

過去のレビュー:

Python の変数は宣言する必要はありません。各変数には使用前に値を割り当てる必要があり、変数が割り当てられるまで変数は作成されません。

Python では、変数は変数であり、型はありません。「型」とは、変数が参照するメモリ内のオブジェクトの型を意味します。

等号 (=) は変数に値を代入するために使用されます。

等号 (=) 演算子の左側は変数名、等号 (=) 演算子の右側は変数に格納される値です。例えば:

例 (Python 3.0 以降)

#!/usr/bin/python3

counter = 100          # 整型变量
miles   = 1000.0       # 浮点型变量
name    = "runoob"     # 字符串

print (counter)
print (miles)
print (name)

例を実行する»
上記のプログラムを実行すると、次の結果が出力されます。

100
1000.0
runoob

複数の変数の代入

Python では、複数の変数に同時に値を割り当てることができます。例えば:

a = b = c = 1

上記の例では、値が 1 の整数オブジェクトを作成し、後ろから前に向かって値を代入し、3 つの変数に同じ値が代入されます。

複数のオブジェクトに複数の変数を指定することもできます。例えば:

a、b、c = 1、2、「ルノブ」

上記の例では、2 つの整数オブジェクト 1 と 2 が変数 a と b に代入され、文字列オブジェクト「runoob」が変数 c に代入されます。

標準データ型

Python3 には 6 つの標準データ型があります。

  • 番号
  • 文字列(文字列)
  • リスト(リスト)
  • タプル
  • セット(コレクション)
  • 辞書

Python3 の 6 つの標準データ型には次のものがあります。

  • 不変データ (3): 数値 (数値)、文字列 (ストリング)、タプル (タプル)。
  • 変数データ(3):List(リスト)、Dictionary(辞書)、Set(コレクション)。

番号

Python3 は int、float、bool、complex (複素数) をサポートします。

Python 3 には、long 整数として表現される整数型 int が 1 つだけあり、python2 には Long はありません。

ほとんどの言語と同様、数値型の割り当てと評価は簡単です。

組み込みの type() 関数を使用して、変数が参照するオブジェクトのタイプをクエリできます。

>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

さらに、isinstance は以下の判断にも使用できます。

>>> a = 111
>>> isinstance(a, int)
True
>>>

isinstance と type の違いは次のとおりです。

  • type() は、サブクラスをスーパークラス型とはみなしません。
  • isinstance() は、子クラスを親クラス型とみなします。
>>> class A:
...     pass
... 
>>> class B(A):
...     pass
... 
>>> isinstance(A(), A)
True
>>> type(A()) == A 
True
>>> isinstance(B(), A)
True
>>> type(B()) == A
False

注: Python3 では、bool は int のサブクラスであり、True と False を数値に追加できます。True1、偽0の場合はTrueを返しますが、isで型を判断できます。

>>> issubclass(bool, int) 
True
>>> True==1
True
>>> False==0
True
>>> True+1
2
>>> False+1
1
>>> 1 is True
False
>>> 0 is False
False

Python2 にはブール型は存在せず、数値 0 を使用して False を表し、1 を使用して True を表します。

値を指定すると、数値オブジェクトが作成されます。

var1 = 1
var2 = 10

del ステートメントを使用して一部のオブジェクト参照を削除することもできます。

del ステートメントの構文は次のとおりです。

del var1[,var2[,var3[…,varN]]]

del ステートメントを使用すると、単一または複数のオブジェクトを削除できます。例えば:

部分 var 部分 var_a、var_b

数値演算

>>> 5 + 4  # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7  # 乘法
21
>>> 2 / 4  # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32

知らせ:

1. Python は、a、b = 1、2 など、複数の変数に同時に値を割り当てることができます。
2. 変数は、代入を通じてさまざまなタイプのオブジェクトを指すことができます。
3. 数値除算には 2 つの演算子が含まれます。/ は浮動小数点数を返し、// は整数を返します。
4. 混合計算中に、Python は整数を浮動小数点数に変換します。

数値型インスタンス

整数 浮く 複雑
10 0.0 3.14y
100 15.20 45.j
-786 -21.9 9.322e-36j
080 32.3e+18。 876j
-0490 -90。 -.6545+0J
-0x260 -32.54e100 3e+26J
0x69 70.2E-12 4.53e-7j

Python は複素数もサポートしています。複素数は実数部と虚数部で構成されます。a + bj、または complex(a,b) で表すことができます。複素数の実数部 a と虚数部 b は次のとおりです。どちらも浮動小数点型です。

文字列(文字列)

Python の文字列は一重引用符 ' または二重引用符 " で囲まれ、特殊文字はバックスラッシュ \ でエスケープされます。

文字列インターセプトの文法形式は次のとおりです。

変数 [先頭の添字:末尾の添字]

インデックス値は0から始まり、最後から-1から始まります。

ここに画像の説明を挿入

プラス記号 + は文字列の結合子、アスタリスク * は現在の文字列をコピーすることを意味し、それを組み合わせた数字はコピーの回数です。例は次のとおりです。

#!/usr/bin/python3

str = 'Runoob'

print (str)          # 输出字符串
print (str[0:-1])    # 输出第一个到倒数第二个的所有字符
print (str[0])       # 输出字符串第一个字符
print (str[2:5])     # 输出从第三个开始到第五个的字符
print (str[2:])      # 输出从第三个开始的后的所有字符
print (str * 2)      # 输出字符串两次,也可以写成 print (2 * str)
print (str + "TEST") # 连接字符串

上記のプログラムを実行すると、次の結果が出力されます。

Runoob
Runoo
R
noo
noob
RunoobRunoob
RunoobTEST

Python では特殊文字をエスケープするためにバックスラッシュ \ を使用します。バックスラッシュをエスケープしたくない場合は、文字列の前に r を追加して元の文字列を表すことができます。

>>> print('Ru\noob')
Ru
oob
>>> print(r'Ru\noob')
Ru\noob
>>>

さらに、バックスラッシュ () は継続文字として使用でき、次の行が前の行の継続であることを示します。「""…""" または ''"…"」を使用して複数行にまたがることもできます。

Python には個別の文字タイプがなく、文字は長さ 1 の文字列であることに注意してください。

>>> word = 'Python'
>>> print(word[0], word[5])
P n
>>> print(word[-1], word[-6])
n P

C 文字列とは異なり、Python 文字列は変更できません。word[0] = 'm' など、インデックス位置に値を割り当てるとエラーが発生します。

知らせ:

1. バックスラッシュはエスケープに使用でき、r はバックスラッシュのエスケープを防ぐために使用できます。
2. 文字列は + 演算子で連結したり、* 演算子で繰り返すことができます。
3. Python の文字列には、左から右に 0 から始まるインデックス付け方法と、右から左に -1 から始まるインデックス付け方法の 2 つがあります。
4. Python の文字列は変更できません。

リスト(リスト)

List (リスト) は、Python で最も頻繁に使用されるデータ型です。

リストは、ほとんどのコレクション クラスのデータ構造の実装を完了できます。リスト内の要素のタイプは異なる場合があり、数値をサポートし、文字列にはリスト (いわゆるネスト) を含めることもできます。

リストは、角括弧 [] の間に書かれた要素のカンマ区切りのリストです。

文字列と同様に、リストにもインデックスを付けて切り詰めることができ、リストが切り詰められた後、必要な要素を含む新しいリストが返されます。

リストインターセプトの構文形式は次のとおりです。

変数 [先頭の添字:末尾の添字]

インデックス値は0から始まり、最後から-1から始まります。

ここに画像の説明を挿入

プラス記号 + はリスト連結演算子、アスタリスク * は繰り返し演算です。例は次のとおりです。

#!/usr/bin/python3

list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']

print (list)            # 输出完整列表
print (list[0])         # 输出列表第一个元素
print (list[1:3])       # 从第二个开始输出到第三个元素
print (list[2:])        # 输出从第三个元素开始的所有元素
print (tinylist * 2)    # 输出两次列表
print (list + tinylist) # 连接列表

上記の例の出力は次のとおりです。

['abcd', 786, 2.23, 'runoob', 70.2]
abcd
[786, 2.23]
[2.23, 'runoob', 70.2]
[123, 'runoob', 123, 'runoob']
['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']

Python 文字列とは異なり、リスト内の要素は変更できます。

>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = []   # 将对应的元素值设置为 []
>>> a
[9, 2, 6]

List には、後述する append()、pop() などの組み込みメソッドが多数あります。

知らせ:

1. リストは角括弧内に記述され、要素はカンマで区切られます。
2. 文字列と同様に、リストにはインデックスを付けたりスライスしたりできます。
3. + 演算子を使用してリストを結合できます。
4. リスト内の要素は変更できます。
Python リスト インターセプトでは、インターセプトのステップ サイズである 3 番目のパラメーターを受け取ることができます。次の例では、インデックス 1 からインデックス 4 にあり、ステップ サイズを 2 (1 位置離れた) に設定して文字列をインターセプトします。

ここに画像の説明を挿入

3 番目のパラメーターが負の場合は、逆読み取りを意味します。次の例は、文字列を逆にするために使用されます。

def reverseWords(input):
     
    # 通过空格将字符串分隔符,把各个单词分隔为列表
    inputWords = input.split(" ")
 
    # 翻转字符串
    # 假设列表 list = [1,2,3,4],  
    # list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样)
    # inputWords[-1::-1] 有三个参数
    # 第一个参数 -1 表示最后一个元素
    # 第二个参数为空,表示移动到列表末尾
    # 第三个参数为步长,-1 表示逆向
    inputWords=inputWords[-1::-1]
 
    # 重新组合字符串
    output = ' '.join(inputWords)
     
    return output
 
if __name__ == "__main__":
    input = 'I like runoob'
    rw = reverseWords(input)
    print(rw)

出力は次のとおりです。

runoob like I

タプル

タプルはリストと似ていますが、タプルの要素は変更できない点が異なります。タプルは括弧 () 内に記述され、要素はカンマで区切られます。

タプル内の要素の型は異なる場合もあります。

#!/usr/bin/python3

tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2  )
tinytuple = (123, 'runoob')

print (tuple)             # 输出完整元组
print (tuple[0])          # 输出元组的第一个元素
print (tuple[1:3])        # 输出从第二个元素开始到第三个元素
print (tuple[2:])         # 输出从第三个元素开始的所有元素
print (tinytuple * 2)     # 输出两次元组
print (tuple + tinytuple) # 连接元组

上記の例の出力は次のとおりです。

('abcd', 786, 2.23, 'runoob', 70.2)
abcd
(786, 2.23)
(2.23, 'runoob', 70.2)
(123, 'runoob', 123, 'runoob')
('abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob')

文字列と同様に、タプルにもインデックスを付けることができ、添字インデックスは 0 から始まり、-1 が末尾からの位置になります。インターセプトも実行できます (上記を参照、ここでは詳細は省略します)。

実際、文字列は特別な種類のタプルと考えることができます。

>>> tup = (1, 2, 3, 4, 5, 6)
>>> print(tup[0])
1
>>> print(tup[1:5])
(2, 3, 4, 5)
>>> tup[0] = 11  # 修改元组元素的操作是非法的
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>

タプルの要素は不変ですが、リストなどの変更可能なオブジェクトを含めることができます。

0 または 1 個の要素を含むタプルの構築は特殊であるため、追加の構文規則がいくつかあります。

tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号

文字列、リスト、タプルはすべてシーケンス (sequence) に属します。

知らせ:

1. 文字列と同様、タプルの要素は変更できません。
2. タプルも同様にインデックス付けしてスライスすることができます。
3. 0 または 1 の要素を含むタプルを構築するための特別な構文規則に注意してください。
4. + 演算子を使用してタプルを連結することもできます。

セット(コレクション)

集合は、さまざまな形や大きさの 1 つまたは複数の全体で構成され、集合を構成する物体は要素またはメンバーと呼ばれます。

基本的な機能は、メンバーシップ テストを実行し、重複する要素を削除することです。

中かっこ { } または set() 関数を使用してコレクションを作成できます。注: 空の辞書の作成には { } が使用されるため、空のコレクションを作成するには、{ } の代わりに set() を使用する必要があります。

フォーマットを作成します:

parame = {
    
    value01,value02,...}
或者
set(value)

#!/usr/bin/python3

sites = {
    
    'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}

print(sites)   # 输出集合,重复的元素被自动去掉

# 成员测试
if 'Runoob' in sites :
    print('Runoob 在集合中')
else :
    print('Runoob 不在集合中')


# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')

print(a)

print(a - b)     # a 和 b 的差集

print(a | b)     # a 和 b 的并集

print(a & b)     # a 和 b 的交集

print(a ^ b)     # a 和 b 中不同时存在的元素

上記の例の出力は次のとおりです。

{
    
    'Zhihu', 'Baidu', 'Taobao', 'Runoob', 'Google', 'Facebook'}
Runoob 在集合中
{
    
    'b', 'c', 'a', 'r', 'd'}
{
    
    'r', 'b', 'd'}
{
    
    'b', 'c', 'a', 'z', 'm', 'r', 'l', 'd'}
{
    
    'c', 'a'}
{
    
    'z', 'b', 'm', 'r', 'l', 'd'}

辞書

辞書は、Python のもう 1 つの非常に便利な組み込みデータ型です。

リストは順序付けされたオブジェクトのコレクションであり、辞書は順序付けされていないオブジェクトのコレクションです。2 つの違いは、ディクショナリ内の要素がオフセットではなくキーによってアクセスされることです。

ディクショナリはマッピング タイプであり、ディクショナリは順序のないキー (キー): 値 (値) のコレクションである { } でマークされます。

キーには不変型を使用する必要があります。

同じ辞書内では、キーは一意である必要があります。

#!/usr/bin/python3

dict = {
    
    }
dict['one'] = "1 - 菜鸟教程"
dict[2]     = "2 - 菜鸟工具"

tinydict = {
    
    'name': 'runoob','code':1, 'site': 'www.runoob.com'}


print (dict['one'])       # 输出键为 'one' 的值
print (dict[2])           # 输出键为 2 的值
print (tinydict)          # 输出完整的字典
print (tinydict.keys())   # 输出所有键
print (tinydict.values()) # 输出所有值

上記の例の出力は次のとおりです。

1 - 菜鸟教程
2 - 菜鸟工具
{
    
    'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
dict_keys(['name', 'code', 'site'])
dict_values(['runoob', 1, 'www.runoob.com'])

コンストラクター dict() は、次のようにキーと値のペアのシーケンスから辞書を直接構築できます。

>>> dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
{
    
    'Runoob': 1, 'Google': 2, 'Taobao': 3}
>>> {
    
    x: x**2 for x in (2, 4, 6)}
{
    
    2: 4, 4: 16, 6: 36}
>>> dict(Runoob=1, Google=2, Taobao=3)
{
    
    'Runoob': 1, 'Google': 2, 'Taobao': 3}

{x: x**2 for x in (2, 4, 6)} このコードは辞書内包表記を使用しています。派生コンテンツの詳細については、「Python 派生」を参照してください。

さらに、辞書タイプには、clear()、keys()、values() などのいくつかの組み込み関数もあります。

知らせ:

1. ディクショナリは、要素がキーと値のペアであるマッピング タイプです。
2. 辞書のキーワードは不変でなければならず、繰り返すことはできません。
3. { } を使用して空の辞書を作成します。

Pythonのデータ型変換

場合によっては、組み込みのデータ型を変換する必要があります。データ型の変換では、データ型を関数名として使用するだけで済みます。次の章で、Python3 のデータ型変換について詳しく紹介します。

次の組み込み関数は、データ型間の変換を実行できます。これらの関数は、変換された値を表す新しいオブジェクトを返します。

関数 説明
int(x [,base]) xを整数に変換する
浮動小数点(x) x を浮動小数点数に変換する
complex(実数 [,imag]) 複数を作成する
str(x) オブジェクト x を文字列に変換します
再現性(x) オブジェクト x を式文字列に変換します。
評価(文字列) 文字列内の有効な Python 式を評価し、オブジェクトを返します。
タプル シーケンス s をタプルに変換します
リスト シーケンス s をリストに変換する
セット 可変コレクションに変換する
dict(d) 辞書を作成します。d は、(キー、値) タプルのシーケンスである必要があります。
フローズンセット 不変コレクションに変換する
chr(x) 整数を文字に変換する
オーダー(x) 文字を整数値に変換します
16進数(x) 整数を 16 進数の文字列に変換します
オクト(x) 整数を 8 進数の文字列に変換します

おすすめ

転載: blog.csdn.net/u011397981/article/details/130999519