当前位置:首页>python>Python 零基础核心基础全梳理(数据类型 + 运算符完整示例)

Python 零基础核心基础全梳理(数据类型 + 运算符完整示例)

  • 2026-10-11 07:19:06
Python 零基础核心基础全梳理(数据类型 + 运算符完整示例)

点击上方蓝字关注我们

收录于系列文章《软件设计师备考》第五十篇
6大数据类型特性

类型

是否有序

是否可变

重复元素

特点

列表List []

有序

可变

允许重复

可以随时增删改里面的元素

元组Tuple()

有序

不可变

允许重复

创建后内容不能修改,安全性更高

字典Dict {键:值}

有序(Python 3.7+)

可变

键不能重复

靠键索引取值,存键值对数据

集合Set{}

无序

可变

不允许重复

自动去重,适合做交集并集等运算

数字Numbers

—

不可变

—

整数、浮点数、复数等

字符串String

有序

不可变

允许重复

创建后不能修改内部内容

可变&不可变划分

    不可变数据:数字、字符串、元组—— 创建后内容无法修改

    案例1:数字

a = 10print("修改前 a =", a)print("修改前 id(a) =", id(a))a = 20                      # 看起来"改了",实际上是重新创建了新对象print("修改后 a =", a)print("修改后 id(a) =", id(a))

    运行结果:

    案例2:字符串

s = "hello"print("修改前 s =", s)print("修改前 id(s) =", id(s))# s[0] = "H"   ← 这行如果去掉注释会报错:'str' object does not support item assignments = s + " world"            # 看起来"改了",实际上是创建了新字符串print("修改后 s =", s)print("修改后 id(s) =", id(s))

    运行结果:

    案例3:元组

t = (1, 2, 3)print("修改前 t =", t)print("修改前 id(t) =", id(t))# t[0] = 999   ← 这行如果去掉注释会报错t = (1, 2, 3, 4)            # 重新赋值,创建了新元组print("修改后 t =", t)print("修改后 id(t) =", id(t))

    运行结果:

    可变数据:列表、字典、集合—— 能直接修改内部元素

    案例4:列表

lst = [1, 2, 3]print("修改前 lst =", lst)print("修改前 id(lst) =", id(lst))lst[0] = 999                # 直接修改第一个元素lst.append(4)               # 添加新元素print("修改后 lst =", lst)print("修改后 id(lst) =", id(lst))

    运行结果:

    案例5:字典

d = {"name": "小明", "age": 18}print("修改前 d =", d)print("修改前 id(d) =", id(d))d["age"] = 19               # 修改已有键的值d["city"] = "上海"           # 新增键值对print("修改后 d =", d)print("修改后 id(d) =", id(d))

    运行结果:

    案例6:集合

s = {1, 2, 3}print("修改前 s =", s)print("修改前 id(s) =", id(s))s.add(4)                    # 添加元素s.remove(2)                 # 删除元素print("修改后 s =", s)print("修改后 id(s) =", id(s))

    运行结果:

python常用运算分类

运算类别

运算符

说明

算术运算

+ - * / // % **

加减乘除、整除、取余、幂运算

关系运算

== != > < >= <=

等于、不等于、大于、小于、大于等于、小于等于(比较大小,返回布尔值)

逻辑运算

and or not

与、或、非(真假判断)

赋值运算

= += -= *= /= //= %= **=

赋值、加等于、减等于、乘等于、除等于、整除等于、取余等于、幂等于

成员运算

in not in

在...里面、不在...里面(判断元素是否在容器里)

身份运算

is is not

是同一个对象、不是同一个对象(判断两个变量是否指向同一对象(不是值相等))

列表专属

+ *

+ 拼接两个列表,* 重复列表内容

集合专属

& | ^ -

交、并、补(对称差)、差运算

    案例1:算术运算

# 算术运算符a = 10b = 3print("a + b =", a + b)      # 13print("a - b =", a - b)      # 7print("a * b =", a * b)      # 30print("a / b =", a / b)      # 3.3333333333333335(浮点数)print("a // b =", a // b)    # 3(整除,向下取整)print("a % b =", a % b)      # 1(余数)print("a ** b =", a ** b)    # 1000(10的3次方)# 注意:// 是向下取整(向负无穷方向取整)print("10 // 3 =", 10 // 3)   # 3print("-10 // 3 =", -10 // 3) # -4(不是 -3,因为 -3.33 向下取整是 -4)

    案例2:比较运算符

# 比较运算符(返回布尔值 True / False)x = 10y = 20print("x == y:", x == y)    # Falseprint("x != y:", x != y)    # Trueprint("x > y:", x > y)      # Falseprint("x < y:", x < y)      # Trueprint("x >= 10:", x >= 10)  # Trueprint("x <= 5:", x <= 5)    # False# 字符串也可以比较(按字母顺序,即 ASCII 码)print("'apple' < 'banana':", "apple" < "banana")  # True(a 在 b 前面)print("'Apple' < 'apple':", "Apple" < "apple")    # True(大写 A 的 ASCII 码小于小写 a)

    案例3:逻辑运算符

# 逻辑运算符a = Trueb = Falseprint("a and b:", a and b)   # False(两个都真才真)print("a or b:", a or b)     # True(至少一个真就真)print("not a:", not a)       # False(取反)print("not b:", not b)       # True(取反)# 结合比较运算符使用age = 18score = 85# 判断:年龄大于等于 18 并且 分数大于 80result = (age >= 18) and (score > 80)print("是否成年且优秀:", result)  # True# 判断:年龄小于 12 或者 年龄大于 60age2 = 65is_child_or_elder = (age2 < 12) or (age2 > 60)print("是否儿童或老人:", is_child_or_elder)  # True

    案例4:赋值运算

# 赋值运算符num = 10print("初始 num =", num)  # 10num += 5   # 等价于 num = num + 5print("num += 5 后:", num)  # 15num -= 3   # 等价于 num = num - 3print("num -= 3 后:", num)  # 12num *= 2   # 等价于 num = num * 2print("num *= 2 后:", num)  # 24num /= 4   # 等价于 num = num / 4print("num /= 4 后:", num)  # 6.0(浮点数)num //= 2  # 等价于 num = num // 2print("num //= 2 后:", num)  # 3.0num %= 2   # 等价于 num = num % 2print("num %= 2 后:", num)  # 1.0num **= 3  # 等价于 num = num ** 3print("num **= 3 后:", num)  # 1.0

    案例5:成员运算

# 成员运算符(用于列表、元组、字符串、字典、集合等)# 列表fruits = ["apple", "banana", "orange"]print("'apple' in fruits:", "apple" in fruits)      # Trueprint("'grape' in fruits:", "grape" in fruits)      # Falseprint("'grape' not in fruits:", "grape" not in fruits)  # True# 字符串text = "hello world"print("'world' in text:", "world" in text)          # Trueprint("'python' in text:", "python" in text)        # False# 字典(判断的是键,不是值)person = {"name": "小明", "age": 18}print("'name' in person:", "name" in person)        # True(判断键)print("'age' in person:", "age" in person)          # True(判断键)print("'小明' in person:", "小明" in person)        # False(判断键,不是值)print("'小明' in person.values():", "小明" in person.values())  # True(判断值)

    案例6:身份运算符

a = 100b = 100print("a is b:", a is b)          # True(指向同一对象)print("a is not b:", a is not b)  # False

    案例7:+ 拼接两个列表

# 列表拼接:将两个列表合并成一个新列表list1 = [1, 2, 3]list2 = [4, 5, 6]result = list1 + list2print("list1 + list2 =", result)  # [1, 2, 3, 4, 5, 6]# 原列表没有被修改print("原 list1 不变:", list1)     # [1, 2, 3]print("原 list2 不变:", list2)     # [4, 5, 6]# 字符串列表也可以拼接names1 = ["小明", "小红"]names2 = ["小刚", "小丽"]all_names = names1 + names2print("所有名字:", all_names)      # ['小明', '小红', '小刚', '小丽']# 混合类型也可以拼接(但一般不推荐)mixed = [1, "hello", True] + [3.14, False]print("混合拼接:", mixed)          # [1, 'hello', True, 3.14, False]

    案例8:* 重复列表内容

# 列表重复:将列表内容重复 N 次list1 = [1, 2, 3]result1 = list1 * 2print("list1 * 2 =", result1)   # [1, 2, 3, 1, 2, 3]result2 = list1 * 3print("list1 * 3 =", result2)   # [1, 2, 3, 1, 2, 3, 1, 2, 3]# 原列表没有被修改print("原 list1 不变:", list1)   # [1, 2, 3]# 可以用来快速初始化列表zeros = [0] * 5print("5个0:", zeros)            # [0, 0, 0, 0, 0]stars = ["*"] * 10print("10个星号:", stars)        # ['*', '*', '*', '*', '*', '*', '*', '*', '*', '*']# ⚠️ 注意:重复列表中的可变元素是浅拷贝(引用同一个对象)matrix = [[0]] * 3print("初始 matrix:", matrix)    # [[0], [0], [0]]matrix[0][0] = 1print("修改后 matrix:", matrix)  # [[1], [1], [1]] ← 三个子列表都变了!# 因为三个 [0] 是同一个对象,复制的是引用# 正确做法:用列表推导式创建独立的子列表matrix2 = [[0] for _ in range(3)]matrix2[0][0] = 1print("正确做法 matrix2:", matrix2)  # [[1], [0], [0]] ← 只有第一个变了

    案例9:&交集(两个集合共有的元素)

set1 = {1, 2, 3, 4, 5}set2 = {4, 5, 6, 7, 8}# 交集:两个集合中都存在的元素intersection = set1 & set2print("set1 & set2 =", intersection)   # {4, 5}# 等价写法intersection2 = set1.intersection(set2)print("intersection() 方法:", intersection2)  # {4, 5}# 多个集合的交集set3 = {4, 5, 9, 10}result = set1 & set2 & set3print("三个集合交集:", result)         # {4, 5}# 无交集的情况result = {1, 2, 3} & {4, 5, 6}print("无交集:", result)               # set()(空集合)

    案例10:| 并集(两个集合的所有元素,去重)

set1 = {1, 2, 3, 4, 5}set2 = {4, 5, 6, 7, 8}# 并集:两个集合的所有元素(重复的只保留一个)union = set1 | set2print("set1 | set2 =", union)   # {1, 2, 3, 4, 5, 6, 7, 8}# 等价写法union2 = set1.union(set2)print("union() 方法:", union2)  # {1, 2, 3, 4, 5, 6, 7, 8}# 多个集合的并集set3 = {100, 200}result = set1 | set2 | set3print("三个集合并集:", result)  # {1, 2, 3, 4, 5, 6, 7, 8, 100, 200}

    案例11: ^ 对称差(补集):只在其中一个集合中的元素

set1 = {1, 2, 3, 4, 5}set2 = {4, 5, 6, 7, 8}# 对称差:去掉共有的,保留各自独有的symmetric_diff = set1 ^ set2print("set1 ^ set2 =", symmetric_diff)  # {1, 2, 3, 6, 7, 8}# 解释:4和5是共有的被去掉,1,2,3只属于set1,6,7,8只属于set2# 等价写法symmetric_diff2 = set1.symmetric_difference(set2)print("symmetric_difference() 方法:", symmetric_diff2)  # {1, 2, 3, 6, 7, 8}# 多个集合的对称差(按顺序依次计算)set3 = {1, 8, 9}result = set1 ^ set2 ^ set3print("三个集合对称差:", result)  # {2, 3, 6, 7, 9}# 一步步算:# (set1 ^ set2) = {1,2,3,6,7,8}# ({1,2,3,6,7,8} ^ set3) = {2,3,6,7,9}

    案例12:- 差集:在第一个集合但不在第二个集合中的元素

set1 = {1, 2, 3, 4, 5}set2 = {4, 5, 6, 7, 8}# 差集:属于 set1 但不属于 set2 的元素difference = set1 - set2print("set1 - set2 =", difference)   # {1, 2, 3}# set2 - set1 结果不同(不对称)difference2 = set2 - set1print("set2 - set1 =", difference2)  # {6, 7, 8}# 等价写法diff1 = set1.difference(set2)diff2 = set2.difference(set1)print("difference() 方法 diff1:", diff1)  # {1, 2, 3}print("difference() 方法 diff2:", diff2)  # {6, 7, 8}# 多个集合的差集(从左到右依次计算)set3 = {1, 2, 10}result = set1 - set2 - set3print("多个集合差集:", result)  # {3}# 解释:set1 - set2 = {1,2,3},再减 set3 = {3}
END
作者介绍

多年前端开发实战经验,坚持原创技术分享。擅长前端与 UI 设计融合,熟练运用 AI 提升开发效率,为不同阶段开发者提供可落地的思路与技巧。

仙女都在看
点点点,赞和在看都在这儿!

最新文章

随机文章