記事ディレクトリ
1.リスト
1. 検索リスト要素値インデックス
index() メソッド: リストから値が最初に出現するインデックス位置を見つけるために使用されます。
文法:listname.index(x,start,end)
- listname - リスト名
- x-- 検索するオブジェクト。
- start -オプション、探す開始位置。
- end -オプション、検索の終了位置。
例:list.index('python')
返される結果は、この要素list列表
に対応するインデックス値です。python
2. リストに要素を追加する
①、append()メソッド:リストの末尾に要素を追加するために使用
文法:listname.append(x)
- listname -- 要素を追加する必要があるリストの名前
- x-- リストの末尾に追加するデータ。単一の要素、またはリスト、タプルなどにすることができます。
②、extend()メソッド:リストの末尾に要素を追加するために使用
文法:listname.extend([x])
- listname -- 要素を追加する必要があるリストの名前
- x-- リストの末尾に追加するデータ。単一の要素、またはリスト、タプルなどにすることができます。
- 注: x の [] を追加するのが最適です
③、insert()メソッド:リストの途中の特定の位置に要素を挿入するために使用
文法:listname.insert(index, x)
- listname -- 要素を追加する必要があるリストの名前
- index -- 挿入位置のインデックス値を指定します
- x-- リストの指定された位置に追加するデータ。単一の要素、リスト、タプルなどにすることができます。
④. マージ方法: リストのスライス操作を使用して、2 つのリストをマージします。
3. リストから要素を削除する
①、defメソッド:インデックス値に応じて要素を削除
構文:def listname[index]
またはdel listname[start, end]
- listname -- 要素を削除する必要があるリストの名前
- index -- 削除する要素のインデックス値
- start - 開始インデックス
- 終了 - 終了インデックス
- 注: del は、インデックスの開始位置から終了位置までの要素を削除します。ただし、終了位置の要素は除外されます。
②、pop()メソッド: インデックス値に応じて要素を削除
文法:listname.pop(index)
- listname -- 要素を削除する必要があるリストの名前
- index -- 削除する要素のインデックス値
- 注: index パラメータを記述しない場合、リストの最後の要素がデフォルトで削除されます
③、remove()メソッド:要素の値に応じて要素を削除
文法:listname.remove(x)
- listname -- 要素を削除する必要があるリストの名前
- x-- 削除する要素
- 注: remove() メソッドは、一度に 1 つの要素を削除します。要素が重複している場合、最初の要素のみが削除されます。要素が存在しない場合は、エラーがスローされます。
④、clear()メソッド:リストをクリア
文法:listname.clear()
- listname -- 要素を削除する必要があるリストの名前
4. リストの並べ替え
①、sort()メソッド
文法:listname.sort(reverse=)
- listname -- ソートするリストの名前
- パラメータ reverse -- True の場合は降順、False の場合は昇順、デフォルトは昇順です。
②、sorted()メソッド
文法:sorted(listname, reverse= )
- listname -- ソートするリストの名前
- パラメータ reverse -- True の場合は降順、False の場合は昇順、デフォルトは昇順です。
③2つの方法の違い
sort() メソッドは元のリストに基づいて直接ソートするため、元のリストが変更されます;
sorted() メソッドはソート結果を新しいリストに保存し、元のリストは変更されません。
5. リスト生成
'''
举一个例子,将偶数筛选出来,放到一个列表里,打印这个列表
'''
# 一般的写法
li1 = []
for i in range(1, 10):
if i % 2 == 0:
li1.append(i)
print('一般写法的输出结果:', li1)
# 列表生成式的写法
li2 = [i for i in range(1, 10) if i % 2 == 0]
print('列表生成式的输出结果:', li2)
結果は次のとおりです。
一般写法的输出结果: [2, 4, 6, 8]
列表生成式的输出结果: [2, 4, 6, 8]
2.辞書
1.辞書要素の取得
①、【 】の方法
文法:dictname["key"]
- dictname - 辞書名
- key -- 要素の対応するキー名
②、get()メソッド
文法:dictname.get("key")
- dictname - 辞書名
- key -- 要素の対応するキー名
③. 2 つのメソッドの違い
[ ] メソッドは、対応するキーが見つからない場合、KeyError エラーが報告されます;
get メソッドは、対応するキーが見つからない場合、None を返します。または、パラメーターを設定して、戻り値が None でないことを確認し、代わりに値を設定してください。
好き:
result = dictname.get("key", 'error')
key が dictname 辞書に存在しない場合、結果を出力した結果はエラーになります。
2.辞書に要素を追加する
①、【 】の方法
文法:dictname[key] = value
- dictname -- 要素を追加する必要がある辞書名
- key -- dictname ディクショナリに存在しないキーを指定します (キーが dictname ディクショナリに存在する場合、それは変更操作です) 追加された要素のキーとして
- value - 追加された要素の値
②、update()メソッド
構文 1:dictname.update({key : value})
構文 2:dictname.update(key = value)
- dictname -- 要素を追加する必要がある辞書名
- key -- dictname ディクショナリに存在しないキーを指定します (キーが dictname ディクショナリに存在する場合、それは変更操作です) 追加された要素のキーとして
- value - 追加された要素の値
3.辞書から要素を削除する
①、pop()メソッド
文法:dictname.pop(key)
- dictname -- 削除する要素の辞書名
- key -- 削除する必要がある要素に対応するキー
②、デル法
文法:del dictname[key]
- dictname -- 削除する要素の辞書名
- key -- 削除する必要がある要素に対応するキー
③、clear()メソッド: 辞書のクリアに使用
文法:dictname.clear()
- dictname -- 空にする必要がある辞書の名前
4.辞書のビューを取得する
keys = dictname.keys() # 获取所有key组成的视图
values = dictname.values() # 获取所有value组成的视图
items = dictname.items() # 获取所有key-value对,组成的视图
- dictname - 辞書名
5. 辞書生成
例は次のとおりです。
'''
将字典的key与value位置互换
'''
dict1 = {
"one": 1, "two": 2, "three": 3}
dict2 = {
value: key for key, value in dict1.items()}
print(dict2)
出力結果:
{
1: 'one', 2: 'two', 3: 'three'}
3. コレクション
1. コレクションに新しい要素を追加する
①、add()メソッド:要素を1つずつ追加
文法:setname.add(x)
- setname -- 要素を追加するセットの名前
- x -- 追加する要素
②、 update() メソッド: 複数の要素を一度に追加
文法:setname.update(x)
- setname -- 要素を追加するセットの名前
- x -- 追加する要素
例は次のとおりです。
a = set('str')
a.add('python')
b = set('str')
b.update('python')
c = {
1, 2, 3}
c.add(80)
d = {
1, 2, 3}
d.update([10, 20, 30])
'''
d.update([10, 20, 30]) 也可以写成
d.update({10, 20, 30})
d.update((10, 20, 30))
'''
print(a)
print(b)
print(c)
print(d)
出力結果:
{
'python', 't', 'r', 's'}
{
'n', 'r', 'h', 'o', 'y', 'p', 's', 't'}
{
80, 1, 2, 3}
{
1, 2, 3, 10, 20, 30}
2.コレクション削除要素
①、remove()メソッド:指定要素を削除
文法:setname.remove(element)
- setname -- セット名
- element - 削除する要素
②、discard()メソッド:指定要素を削除
文法:setname.discard(element)
- setname -- セット名
- element - 削除する要素
remove() メソッドと discard() メソッドの違い:
remove メソッドを使用して要素を削除する場合、その要素がコレクションに存在しない場合、プログラムはエラーを報告します。
破棄メソッドを使用して要素を削除する場合、その要素がコレクションに存在しない場合、プログラムはエラーを報告しません。
③、pop()メソッド: 最初の要素を削除し、削除した要素を返す
文法:setname.pop()
- setname -- セット名
④、clear()メソッド:コレクションをクリア
文法:setname.clear()
- setname -- セット名
例は次のとおりです。
a = {
1, 2, 3, 4, 5}
a.remove(2)
print(a)
b = {
1, 2, 3, 4, 5}
b.discard(3)
print(b)
c1 = {
1, 2, 3, 4, 5}
c2 = c1.pop()
print(c1)
print(c2)
d = {
1, 2, 3, 4, 5}
d.clear()
print(d)
出力結果:
{
1, 3, 4, 5}
{
1, 2, 4, 5}
{
2, 3, 4, 5}
1
set()
3. セット生成
リスト生成と比べて、[ ] を { } に変更するだけで、
繰り返し要素を削除したい場合は、セット生成を使用できます。
4.ストリング
1. 文字列のセグメンテーション
split() メソッド: 文字列をスライスする区切り文字を指定します
文法:strname.split(x)
- strname - 文字列名
- x-- 指定されたセパレータ
2.弦交換
replace() メソッド: 文字列内の古い文字列を新しい文字列に置き換えます
文法:strname.replace(old, new)
- strname - 文字列名
- old - 置換される部分文字列
- new - 古い部分文字列を置き換える新しい文字列
3.弦の組み合わせ
①、+方法
+ 記号を使用して文字列をスプライスします
②、join()メソッド: リスト(またはタプル)内の複数の文字列を固定セパレータで結合
文法:newstr = str.join(iterable)
- newstr - マージ後に生成された新しい文字列
- str -- マージ時の区切り文字を指定します
- iterable -- マージ操作のソース文字列データ
lie = ['www', 'baidu', 'com']
newstr = '.'.join(lie)
print(newstr)
出力結果:
www.baidu.com
5. 例外処理メカニズム
try:
# 这部分写不能确定正确执行的代码
except Exception as e:
print('未知错误 %s' %e)
6. クラスとオブジェクト
1. クラスを定義する
クラスを定義するための基本的な構文は次のとおりです。
class 类名:
多个(≥0)类属性...
多个(≥0)类方法...
2. クラス変数とインスタンス変数
クラス本体では、すべての関数の外側: このスコープで定義された変数は、クラス属性またはクラス変数と呼ばれます;
クラス本体では、すべての関数の内側: 「self.変数名」の形式で定義された変数は、インスタンス属性またはインスタンス変数と呼ばれます。 ;
class Person():
introduce = "大家好!" # 类属性
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age # 实例属性
3. インスタンスメソッド、クラスメソッド、静的メソッド
変更されていないメソッドはインスタンス メソッドであり、
@classmethod で変更されたメソッドはクラス メソッドであり、
@staticmethod で変更されたメソッドは静的メソッドです。
class Person():
def say(self):
print("正在调用实例方法")
@classmethod
def eat(cls):
print("正在调用类方法")
@staticmethod
def drink():
print("正在调用静态方法")
4. クラス オブジェクトのインスタンス メソッドの作成と呼び出し
class Person():
def say(self): # 实例方法
print("我是张三")
zhang = Person() # 创建类对象,zhang
"""
类对象调用实例方法的两种方式:
1、通过类对象名调用实例方法
2、通过类名直接调用实例方法
"""
zhang.say()
Person.say(zhang)
5.カプセル化
クラス内の変数や関数の名前がアンダーバー2重「__」で始まる場合、その変数(関数)はプライベート変数(プライベート関数)となり、クラスのカプセル化が実現されます。
参考:
https://blog.csdn.net/sinat_38682860/article/details/109560354
6.継承
継承を実装するクラスをサブクラス、継承されるクラスを親クラス(基底クラス、スーパークラスともいう)と呼びます。
サブクラスが親クラスを継承する場合、サブクラスを定義するときに、サブクラスの後に親クラス (複数可) を括弧で囲むだけで済みます。構文形式は次のとおりです:
(複数の親クラス、つまり多重継承)
class 类名(父类1, 父类2, ...):
#类定义部分
注: クラスが継承元のクラスを明示的に指定しない場合、デフォルトでオブジェクト クラスが継承されます。
(オブジェクト クラスは、Python のすべてのクラスの親クラス、つまり、直接の親クラスまたは間接的な親クラスのいずれかです)
class People:
def say(self):
print("我是一个人,名字是:",self.name)
class Animal:
def display(self):
print("人也是高级动物")
#同时继承 People 和 Animal 类
#其同时拥有 name 属性、say() 和 display() 方法
class Person(People, Animal):
pass
zhangsan = Person()
zhangsan.name = "张三"
zhangsan.say()
zhangsan.display()
継承があるところには、書き換えが必要です。オーバーライドとは、クラス内の既存のメソッドの内部実装を変更することを指します。
class Bird:
#鸟有翅膀
def isWing(self):
print("鸟有翅膀")
#鸟会飞
def fly(self):
print("鸟会飞")
class Ostrich(Bird):
# 重写Bird类的fly()方法
def fly(self):
print("鸵鸟不会飞")
# 创建Ostrich对象
ostrich = Ostrich()
# 调用被重写的方法
ostrich.fly()
# 调用 Bird 类中的 fly() 方法 || 调用未被重写的方法
Bird.fly(ostrich)
サブクラス内のコンストラクターで、親クラスのコンストラクターを呼び出す方法: super() 関数を使用します。ただし、多重継承が関係している場合、この関数は最初の直接の親クラスのコンストラクターしか呼び出すことができません。
class People:
def __init__(self, name):
self.name = name
def say(self):
print("我是人,名字为:", self.name)
class Animal:
def __init__(self, food):
self.food = food
def display(self):
print("我是动物,我吃", self.food)
class Person(People, Animal):
# 自定义构造方法
def __init__(self, name, food):
# 调用 People 类的构造方法
super().__init__(name)
# super(Person,self).__init__(name) #执行效果和上一行相同
# People.__init__(self,name)#使用未绑定方法调用 People 类构造方法
# 调用其它父类的构造方法,需手动给 self 传值
Animal.__init__(self, food)
per = Person("zhangsan", "熟食")
per.say()
per.display()
7. ポリモーフィズム
クラス ポリモーフィズムの前提条件:
- 継承: サブクラスと親クラスの間でポリモーフィズムが発生する必要があります。
- 書き換え: サブクラスは親クラスのメソッドをオーバーライドします。
- 同じ変数が、異なるクラス オブジェクトに連続して割り当てられる場合があります。
class CLanguage:
def say(self):
print("调用的是 Clanguage 类的say方法")
class CPython(CLanguage):
def say(self):
print("调用的是 CPython 类的say方法")
class CLinux(CLanguage):
def say(self):
print("调用的是 CLinux 类的say方法")
a = CLanguage()
a.say()
a = CPython()
a.say()
a = CLinux()
a.say()
ポリモーフィズムから派生した Python のより柔軟なプログラミング メカニズムは、「ダック モデル」または「ダック タイプ」と呼ばれます。例は次のとおりです。
class WhoSay:
def say(self,who):
who.say()
class CLanguage:
def say(self):
print("调用的是 Clanguage 类的say方法")
class CPython(CLanguage):
def say(self):
print("调用的是 CPython 类的say方法")
class CLinux(CLanguage):
def say(self):
print("调用的是 CLinux 类的say方法")
a = WhoSay()
#调用 CLanguage 类的 say() 方法
a.say(CLanguage())
#调用 CPython 类的 say() 方法
a.say(CPython())
#调用 CLinux 类的 say() 方法
a.say(CLinux())
このプログラムでは、WhoSay クラスの say() 関数に who パラメーターを追加することで、受信した who を使用して内部で say() メソッドを呼び出します。つまり、WhoSay クラスで say() メソッドを呼び出すと、who パラメーターに渡すクラス インスタンス オブジェクトに関係なく、そのクラスの say() メソッドが呼び出されます。