設定()
>>>x = set('runoob') >>> y = set('google')
>>> x, y (set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l']))
# 重复的被删除
>>> x & y
# 交集 set(['o'])
>>> x | y
# 并集 set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
>>> x - y
# 差集
set(['r', 'b', 'u', 'n'])
と
with open as file
# 相当于
try
final file.close()
主張する
assert true/false ,"string"
# 如果false ,抛出错误 提示 为 string
下線
单下划线函数,外部无法import *
类里的双下划线,无法被外部利用,
前后双下划线可以,但是不要用,因为python版本更新后作者会用
_ 表示没有赋值的最后一个值
データ構造リストの最適化
リスト内包表記が特別な理由
リスト内包の高速化
範囲はメモリを占有しません
“,”.join(str(n) for n in range(100))
Map()、filter() の代わりにリスト内包表記を使用する
def is_odd_number(number: int) -> bool:
return number % 2 == 1
odd_numbers = filter(is_odd_number,nums)
odd_numbers_doubled = list(map(lambda x: x*2,odd_numbers))
# https://www.runoob.com/python/python-func-map.html
負のインデックス
iterable の all と any の決定
# 内置函数
sum([1,2,3])
# all和any,iterable 是可迭代对象
def has_zero(iterable):
return not all(iterable)
* 演算子を使用して残りのシーケンスを操作します
array.array プリミティブ型の配列を取得します
厳密に型指定されている (つまり、要素の型は変更できません)
str を含む不変の Unicode 文字配列
bytearray を使用したシングルバイトの可変シーケンス
バイト (データをバイナリ形式で保存) 不変
![[貼り付け画像20230206163729.png]]
バイトを不変のシングルバイトシーケンスとして使用する
効率的な辞書
デフォルトパラメータ
my_car = cars_config.get("volvo123","CCC")
デフォルトディクショナリを使用する
from collections import defaultdict
_dict = defaultdict(list)
![[貼り付け画像20230206170239.png]]
辞書はSwitch-caseをシミュレート(多重化を実現)
オブジェクト指向開発の原則: 変更はクローズド、拡張機能はオープンである必要があります。
Python 3.10
辞書の理解により辞書の構築が最適化されます