变量

命名规范

  1. 见名知义

  2. 下划线命名法(推荐使用),驼峰命名法

  3. 只能包含字母、数字和下划线,不能以数字开头

  4. 不能使用保留字

基本数据类型

整型(integer)和浮点型(float)

​ 不可变数据类型(immutable)

字符串类型

​ 通常使用一对单引号('')或双引号(""),三重引号(''' 或 """)表示多行字符串

布尔类型(boolean)

​ True和False,bool(),

输入输出函数

​ input(),print()

常见类型转换

​ int() str() float()

NoneType类型

​ 唯一值None

运算符

计算运算符

+ - * /

% 取余 // 整除

比较运算符

> < >= <= == !=

is==的区别

  • is比较两个对象是否引用同一个对象即:内存地址是否相同
  • ==比较两个对象的值是否相等,不考虑是否是同一个对象

andor运算符的机制

  • 如果or左边的布尔结果为True,则直接将左边的结果返回,右边压根不看了
  • 如果or左边的布尔结果为False,则直接将右边的结果返回,无论右边的布尔结果是否为True
  • 如果and两边的布尔结果为假,返回左边的结果 0 and False --> 0
  • 如果and两边的布尔结果为真,返回右边的 3 and True --> True
  • 如果and左边的为真,右边的为假,返回右边的,无论右边的结果是真是假 3 and 0 --> 0
  • 如果and左边的为假,右边的为真,返回左边的,无论左边的结果是真是假 0 and 3 --> 0
print(6 or 2 > 1)   # 6
print(3 or 2 > 1)	# 3
print(0 or 5 < 4)	# False
print(2 > 1 or 6)	# True

赋值运算符

= += -= *= /=

逻辑运算符

​ and 逻辑与 or 逻辑非 not 逻辑非

成员运算符

in / not in检查一个值是否存在于某个序列

字符串

字符串的转义符

\n:换行符,表示在字符串中创建一个新行。

\t:制表符,表示在字符串中插入一个水平制表符(Tab)。

\b:退格字符,b代表backspace,可以把一个退格符看成一个backspace键

\":双引号,用于在字符串中包含双引号字符。

\':单引号,用于在字符串中包含单引号字符。

\\:反斜杠,用于在字符串中包含反斜杠字符本身。

格式化输出

  1. %占位符

  2. f-string(推荐使用)

    宽度与精度 width[.precision]

    填充与对其 [pad]alignWidth[.precision]

    ​ pad填充字符,可选,默认空格;

    ​ align对齐方式(<左对齐>右对齐^居中)

字符串的序列化操作

  1. 索引(Index)和切片(Slice)
  2. 其他
    • len()
    • 拼接:+ *
    • in判断

字符串的内置方法

方法 作用 示例 输出
upper() 全部大写 "hello".upper() HELLO
lower() 全部小写 "hello".lower() hello
startswith() 是否以a开头 "张三".startswith() True
endswith() 是否以a结尾 "meinv.png".endswith(".jpg") False
isdigit() 是否全数字 "123".isdigit() True
strip() 去两边空格 " hi yuan \n" "hi yuan"
join() 将多个字符串连接在一起 "-".join("北京","上海") "北京-上海"
split() 按某字符分割字符串,默认按空格分割 "北京-上海".split() ['北京','上海']
find() 搜索指定字符串的索引,找不到返回-1 "hello yuan".find("yuan") 6
index() 同上,找不到会报错 "hello yuan".index("yuan") 6
count() 统计指定的字符串出现的次数 "hello yuan".index("l") 2
replace() 替换old为new "hello world".replace("world","python") "hello python"

流程控制语句

列表

列表List 有序、可变、可重复

基本操作

  1. 索引操作

  2. 切片操作

  3. 判断成员是否存在

  4. 相加

  5. 循环列表

  6. 计算元素个数

内置方法

方法 作用 示例 输出
append() 追加元素 list.append(100)
insert() 任意位置添加元素 list.insert(1,100)
extend() 向列表合并一个列表 list1.extend(list2)
pop() 根据索引删除列表元素(为空删除最后一个元素) list.pop(1)
remove() 根据元素值删除列表元素 list.remove(100)
clear() 清空列表元素 list.clear()
sort() 排序(升序) list.sort()
reverse() 翻转列表 list.reverse()
count() 元素重复的次数 list.count(3)
index() 查找元素对应索引 list.index(3)

列表的深浅拷贝

  • 不可变类型,包括:整型integer,浮点数float,布尔值boolean,字符串string,元组tuple

  • 可变类型,包括:列表list,字典dictionary

  • 浅拷贝(Shallow Copy)是创建一个新的列表对象,该对象与原始列表共享相同的元素对象。当你对其中一个列表进行修改时,另一个列表也会受到影响。

    这意味着如果原始列表中含有***可变对象(如子列表、字典等)***,新列表中的对应元素也会指向相同的可变对象。因此,改变新列表中的可变对象会影响原列表中的对应元素。

    1. 切片操作符[:]
    2. list()函数
    3. copy()方法
  • 深拷贝(Deep Copy)是创建一个新的列表对象,并且递归地复制原始列表中的所有元素对象。这意味着原始列表和深拷贝的列表是完全独立的,对其中一个列表的修改不会影响另一个列表。

    1. copy.deepcopy()

总结

浅拷贝:仅拷贝顶层结构,共享内部的可变对象

深拷贝:拷贝所有的结构和数据,不共享任何对象

列表的嵌套

列表推导式

列表推导式List comprehensioins

new_list = [expression for item in iterable if condition]

其中:

  • expression 是要应用于每个元素的表达式或操作。
  • item 是来自可迭代对象(如列表、元组或字符串)的每个元素。
  • iterable 是可迭代对象,提供要遍历的元素。
  • condition 是一个可选的条件,用于筛选出满足条件的元素。

元组

元组tuple 有序、不可变、可重复,只读列表

  • 长度 len()
  • 索引、切片
  • 成员判断 in
  • 拼接 +
  • 循环
  • 内置方法:index()、count()

字典

字典dictionary ,键key必须是唯一的,值value可以是任意类型的数据

  • 无序性:通过键访问和操作字典中的值
  • 键是唯一的且不可变类型对象:用于标识值。值可以是任意类型的对象,整数、字符串、列表、元组等
  • 可变性

基本操作

  1. 使用{}创建字典

    gf = {"name":"","age":18}
    
  2. 查键值

    gf["name"]
    
  3. 添加或修改键值对

  4. 删除键值对

    del gf["age"]
    
  5. 判断键是否存在

    "weight" in gf
    
  6. 循环

    for key in gf:
    

内置方法

方法 作用 示例 结果
update() 更新字典(添加或修改) d.update({"age":19, "height":"190cm"})
pop() 根据删除指定的键值对,并返回键对应的值。 d.pop("height")
popitem() 默认删除字典最后的键值对,并返回被删除的(key, values)元组 d.popitem()
clear() 清空字典 d.clear()
get() 查询键对应的值,没有该键也不会报错 d.get("name")
keys() 查询所有键 d.keys()
values() 查询所有值 d.values()
items() 查询所有键值对 d.items()

dict.pop(key, [, default])

如果要删除的键在字典中不存在,pop会抛keyerror异常

如果提供了默认值作为第二个参数,当键不存在时会返回该默认值而不是抛出异常

集合

集合(Set) 是无序、不重复的数据结构。集合中的元素必须是不可变类型,且每个元素都是唯一的。

无序性:集合中的元素是无序的,不能使用索引

唯一性

可变性:集合是可变的,可以通过添加和删除元素来改变集合的内容

内置方法

方法 作用 示例 结果
add() 添加元素 s.add(14)
remove() 删除集合中的元素,元素不存在,报错 s.remove(11)
discard() 删除集合中的元素,元素不存在,不报错 s.discard(11)
pop() 删除并返回任意的集合元素 s.pop()
clear() 清空集合 s.clear()
update() 并集更新 s.update({12, 13, 14})
intersection() 返回与参数集合的交集,等同于& s.intersection({12, 13, 14})
union() 返回与参数集合的并集,等同于| s.union({12, 13, 14})
difference() 返回与参数集合的差集,等同于- s.difference({12, 13, 14})
symmetric_difference() 返回与参数集合的对称差集,等同于 s.symmetric_difference({12, 13, 14})

总结

列表 元组 字典 集合
有序 有序 无序 无序
list.append(元素) list.insert(index,元素) list.extend(list2) dict.update({key:value}) set.add(元素) set.update(元素)
list.pop(index) list.remove(元素) list.clear() dict.pop(key) dict.popitem() dict.clear() set.remove(元素) set.discard(元素) set.pop() set.clear()
list[index]=元素 dict.update({key:value}) set.update(元素)
list[index] tuple[index] dict.get(key)