Python 变量和数据类型

Python 变量和数据类型

Python 变量和数据类型

概述

变量和数据类型是编程的基础概念。在Python中,变量用于存储数据,而数据类型决定了变量可以存储的数据种类以及可以对这些数据执行的操作。

数据类型分类

数据类型分类

数据类型 ├── 基本数据类型 │ ├── 数字类型 (Numbers) │ ├── 字符串类型 (String) │ ├── 布尔类型 (Boolean) │ └── None类型 └── 复合数据类型 ├── 列表类型 (List) ├── 元组类型 (Tuple) ├── 字典类型 (Dictionary) └── 集合类型 (Set) 

代码示例

#!/usr/bin/env python3# -*- coding: utf-8 -*-""" 文件名: variables_and_data_types.py 开发思路和开发过程: 1. 首先介绍Python中的基本数据类型 2. 演示如何声明和使用变量 3. 展示各种数据类型的特性和用法 4. 包含类型转换的相关示例 代码功能: 演示Python中的变量和数据类型,包括数字、字符串、布尔值等基本类型, 以及列表、元组、字典、集合等复合类型。 """# 1. 数字类型 (Numbers)print("=== 数字类型 ===")# 整数 (Integer) age =25print(f"整数示例 - 年龄: {age} (类型: {type(age)})")# 浮点数 (Float) height =175.5print(f"浮点数示例 - 身高: {height}cm (类型: {type(height)})")# 复数 (Complex) complex_num =3+4jprint(f"复数示例: {complex_num} (类型: {type(complex_num)})")# 布尔值 (Boolean) - 实际上是int的子类 is_student =True is_employed =Falseprint(f"布尔值示例 - 是学生: {is_student} (类型: {type(is_student)})")print(f"布尔值示例 - 已就业: {is_employed} (类型: {type(is_employed)})")print("\n")# 2. 字符串类型 (String)print("=== 字符串类型 ===")# 单引号字符串 name ='张三'print(f"单引号字符串: {name}")# 双引号字符串 message ="Hello, World!"print(f"双引号字符串: {message}")# 三引号字符串(多行字符串) multiline_text =""" 这是一个 多行 字符串示例 """print(f"三引号字符串: {multiline_text}")# 字符串格式化 (f-string, Python 3.6+特性,在Python 3.12中仍然适用) formatted_str =f"姓名: {name}, 年龄: {age}"print(f"F-string格式化: {formatted_str}")print("\n")# 3. 列表类型 (List) - 可变有序序列print("=== 列表类型 ===")# 创建列表 fruits =['苹果','香蕉','橙子']print(f"水果列表: {fruits} (类型: {type(fruits)})")# 访问列表元素print(f"第一个水果: {fruits[0]}")# 修改列表元素 fruits[1]='葡萄'print(f"修改后的水果列表: {fruits}")# 添加元素 fruits.append('草莓')print(f"添加草莓后的列表: {fruits}")print("\n")# 4. 元组类型 (Tuple) - 不可变有序序列print("=== 元组类型 ===")# 创建元组 coordinates =(10,20)print(f"坐标元组: {coordinates} (类型: {type(coordinates)})")# 元组解包 x, y = coordinates print(f"解包后 - x: {x}, y: {y}")print("\n")# 5. 字典类型 (Dictionary) - 键值对集合print("=== 字典类型 ===")# 创建字典 person ={'name':'李四','age':30,'city':'北京'}print(f"人员信息字典: {person} (类型: {type(person)})")# 访问字典值print(f"姓名: {person['name']}")# 添加新的键值对 person['occupation']='工程师'print(f"添加职业后的字典: {person}")print("\n")# 6. 集合类型 (Set) - 无序不重复元素集合print("=== 集合类型 ===")# 创建集合 unique_numbers ={1,2,3,3,4,4,5}print(f"唯一数字集合: {unique_numbers} (类型: {type(unique_numbers)}, 注意重复元素被去除)")# 集合操作 set_a ={1,2,3} set_b ={3,4,5}# 并集 union_result = set_a | set_b print(f"并集: {union_result}")# 交集 intersection_result = set_a & set_b print(f"交集: {intersection_result}")print("\n")# 7. 类型转换 (Type Conversion)print("=== 类型转换 ===")# 字符串转整数 str_num ="123" int_num =int(str_num)print(f"字符串 '{str_num}' 转整数: {int_num} (类型: {type(int_num)})")# 整数转字符串 num =456 str_from_num =str(num)print(f"整数 {num} 转字符串: '{str_from_num}' (类型: {type(str_from_num)})")# 列表转元组 my_list =[1,2,3] my_tuple =tuple(my_list)print(f"列表 {my_list} 转元组: {my_tuple} (类型: {type(my_tuple)})")# 元组转列表 original_tuple =('a','b','c') new_list =list(original_tuple)print(f"元组 {original_tuple} 转列表: {new_list} (类型: {type(new_list)})")print("\n")# 8. None类型print("=== None类型 ===") result =Noneprint(f"None值: {result} (类型: {type(result)})")print("\n")# 9. 查看变量类型print("=== 查看变量类型 ===") variations =[age, height, name, is_student, fruits, coordinates, person, unique_numbers]for i, var inenumerate(variations,1):print(f"变量 {i}: 值={var}, 类型={type(var).__name__}")

数据类型特性对比

数据类型特性对比

可变性

有序性

允许重复

索引方式

列表: 可变

元组: 不可变

字典: 可变

集合: 可变

列表: 有序

元组: 有序

字典: 有序

集合: 无序

列表: 允许

元组: 允许

字典: 值允许,键不允许

集合: 不允许

列表: 数字索引

元组: 数字索引

字典: 键索引

集合: 无索引

学习要点

  1. 理解变量的概念:变量是存储数据的容器
  2. 掌握各种数据类型的特性:不同数据类型有不同的用途和操作方法
  3. 学会类型转换:在适当的时候进行数据类型转换
  4. 理解可变与不可变类型的区别:这会影响程序的行为和性能

实践建议

  1. 运行示例代码,观察各种数据类型的输出
  2. 尝试修改代码中的值,观察结果变化
  3. 练习不同类型之间的转换
  4. 创建自己的数据结构组合使用多种数据类型

Read more

【数据结构与算法】环与相遇:链表带环问题的底层逻辑与工程实现

【数据结构与算法】环与相遇:链表带环问题的底层逻辑与工程实现

🔥小龙报:个人主页 🎬作者简介:C++研发,嵌入式,机器人等方向学习者 ❄️个人专栏:《C语言》《【初阶】数据结构与算法》 ✨ 永远相信美好的事情即将发生 文章目录 * 前言 * 一、带环链表 * 1.1题目 * 1.2 算法原理 * 1.3 代码 * 1.4 数学证明 * 1.4.1 为什么带环slow与fast必定能相遇? * 1.4.2 fast一定只能走2步吗?可以是2步甚至更多吗? * 1.4.2.1 以3步为例 * 1.4.3结论 * 二、环形链表(寻找相遇点) * 2.1 题目

By Ne0inhk
【优选算法】滑动窗口算法:专题一

【优选算法】滑动窗口算法:专题一

目录 引言:  【209. 长度最小的子数组】 题目描述: 实现核心及思路: 思路可视化: 代码实现: 【无重复字符的最长子串】 题目描述: 实现核心及思路: 思路可视化: 代码实现: 【最大连续1的个数III】 题目描述: 实现核心及思路: 代码实现: 【1658.将x减到0的最小操作数】 题目描述: 实现核心即思路: 代码实现: 引言: 滑动窗口?用两个指针维护一个动态的 “窗口” 区间,通过移动指针来扩大或缩小窗口,在一次遍历中完成计算,时间复杂度通常为 O (n)。 典型应用:寻找最长无重复字符的子串找到和为目标值的最短子数组字符串的排列匹配 一般步骤(模板): (1)定义left 和 right 指针同时指向数组首元素; (2)当符合要求时,right++,模拟进窗口; (3)不满足要求时,left++,模拟出窗口; (4)

By Ne0inhk
【动态规划】数位DP的原理、模板(封装类)

【动态规划】数位DP的原理、模板(封装类)

本文涉及知识点 C++动态规划 复杂但相对容易理解的解法 上界、下界的位数一样都为N。如果不一样,拆分一样。比如:[10,200],拆分[10,99]和[100,200]。由于要枚举到 1 ∼ N 1\sim N 1∼N,故实际复杂度是N倍。 动态规划的状态表示 dp[n][m][m1],n表示已经处理最高n位,m表示上下界状态:0非上下界,1下界,2上界,3上下界。m1是自定义状态。 某题范围是[110,190],处理一位后:1是上下界,无其它合法状态。处理二位后,11是下界,19是上界, 12 ∼ 18 12

By Ne0inhk

基于遗传算法的LQR控制器最优设计算法

线性二次调节器(LQR)是控制理论中重要的设计方法,而遗传算法(GA)为LQR控制器的优化设计提供了强大的全局搜索能力。 LQR控制器基本原理 LQR控制器通过最小化代价函数设计最优状态反馈增益矩阵: J=∫(xTQx+uTRu)dtJ = ∫(xᵀQx + uᵀRu)dtJ=∫(xTQx+uTRu)dt 其中: * Q≥0Q ≥ 0Q≥0:状态加权矩阵 * R>0R > 0R>0:控制输入加权矩阵 * u=−Kxu = -Kxu=−Kx:状态反馈控制律 传统方法通过求解代数RiccatiRiccatiRiccati方程获得最优增益矩阵KKK: K=R−1BTPK = R⁻¹BᵀPK=R−1BTP AP+PAT−PBR−1BTP+Q=

By Ne0inhk