Python学习笔记 CH1-4:从入门到列表
Python CH1 环境准备
-
因为已经有了C/C++、Java的基础,所以上手很快。
-
参考书:Eric Matthes -《Python编程 从入门到实践》
-
环境准备:python3、PyCharm2020
-
哪里不会baidu/bilibili哪里
-
代码之道
- 选择简单且行之有效的方案
- 不因追求完美而忽略行之有效
- 不要将问题太过复杂化
-
想做的事
- 小游戏-外星人入侵
- 数据可视化-打卡表
- …
Python CH2 变量及简单数据类型
- 有点像web,变量存什么,就是什么类型。
- 不用定义数据类型,就很方便。
- 但是不同类型,要转化为统一类型,再进行操作。
- 变量使用前,一定要赋值,哪怕是空。
2.1变量命名规范
- 字母、数字、下划线,不以数字开头
- 不能有空格
- 不能使用python关键字
- 名称简短且有描述性(可读性 eg.name比n好,num比n好
- 慎用小写l、大写O
2.2 字符串及其处理
-
大小写转换
- 变量名.title() 单词首字母大写,其余全小写
- 变量名.upper() 全大写
- 变量名.lower() 全小写
-
合并字符串 字符串加法
-
关于空白
- 打印空白:空格、制表符、换行符…(space、\t、\n…)
- 删除空白:(临时的,如果想永久,重新赋值即可)
- 变量名.rstrip() 删除串尾空白
- 变量名.lstrip() 删除串首空白
- 变量名.strip() 删除首尾空白
-
引号
正确使用引号,单/双引号都可以保存串。
输出引号需转义。
2.3数值及其运算符
-
常规 “+, -, *, /, %, ()…” 都有
-
乘方 **
3**6 <==> 3的6次方
-
复合 +=, -=, …. 也都有
-
特殊
- python3中 取消1/2=0这种,直接1/2=0.5。但是以前的版本有
- 没有++,–,^
-
str(数值) 转换类型
数值与串不能直接操作,可将数值转换成字符串类型
"Hello world, " + str(2319) ==> "Hello world, 2319"
2.4注释
-
单行 #
-
可跨行 “”” 内容 “””
# 单行注释 """ 三对引号 可以实现 跨行注释 """
Python CH3 列表基础
-
跟数组差不多
-
[] 中括号表示列表
-
, 逗号分隔元素
-
names 常用单词复数,命名列表
3.1访问列表元素
- 列表名 访问整个列表
- 列表名(索引) 访问单个元素 (从0开始的列表索引)
- 索引为 -1 表示列末元素 (-2,-3依次类推,前提是列表得有足够的元素
- 一定要避免索引错误!
fruits = ['苹果', '香蕉', '梨']
print(fruits) # 打印结果:['苹果', '香蕉', '梨']
print(fruits[2]) # 打印结果:梨
3.2增删改
-
增
- append() 列尾添加
- insert() 指定位置添加
fruits = [] fruits.append('苹果') fruits.append('香蕉') fruits.append('梨') fruits.append('草莓') # 向列尾添加元素 print(fruits) # 打印结果:['苹果', '香蕉', '梨', '草莓'] fruits.insert(0,'西瓜') # 向列首(位置0)添加元素 print(fruits) # 打印结果:['西瓜', '苹果', '香蕉', '梨', '草莓']
-
删
- del语句 根据索引删除
- remove() 根据内容删除
- pop() 根据索引删除
fruits = ['西瓜', '苹果', '香蕉', '梨', '草莓'] del fruits[0] # 根据索引删除 print(fruits) # 打印结果:['苹果', '香蕉', '梨', '草莓'] fruits.pop() # 取出栈顶元素(最后一个元素) print(fruits) # 打印结果:['苹果', '香蕉', '梨'] fruits.pop(0) # 根据索引删除 print(fruits) # 打印结果:['香蕉', '梨'] fruits.remove('香蕉') # 根据内容删除 print(fruits) # 打印结果:['梨']
-
改
给元素重新赋值
3.3 排序
-
sort() 升序排序(永久性排序,列表被改变)
- sorted() 临时性排序,不改变列表
-
reverse() 倒置列表
-
len() 列表长度(数值类型)
numbers = [2, 3, 1, 9, 0, 7, 0, 2, 4] print(sorted(numbers)) # 打印结果 [0, 0, 1, 2, 2, 3, 4, 7, 9] print(numbers) # 打印结果 [2, 3, 1, 9, 0, 7, 0, 2, 4] numbers.sort() # 永久升序 print(numbers) # 打印结果 [0, 0, 1, 2, 2, 3, 4, 7, 9] numbers.sort(reverse = True) # 永久降序 print(numbers) # 打印结果 [9, 7, 4, 3, 2, 2, 1, 0, 0] numbers.reverse() # 倒置列表 print(numbers) # 打印结果 [0, 0, 1, 2, 2, 3, 4, 7, 9] print(len(numbers)) # 列表长度,打印结果:9
Python CH4 列表进阶:循环遍历
- 潜规则:for循环遍历+基本操作,while循环条件操作
- 没有循环变量,可以有循环条件
4.1for循环
- for … in … :
- 冒号 (不要遗忘)
- 缩进 (python以缩进区分代码块,后面if、while等也是如此
- 不要遗漏/错误缩进
# 通式
for xx in xxs :
do something
fruits = ['苹果', '香蕉', '梨']
for fruit in fruits :
print(fruit)
print("Circulation out.")
"""打印结果
苹果
香蕉
梨
Circulation out.
"""
4.2 range() + for
- range() 生成一系列的数字
numbers = []
for number in range(1,5): # [1, 5) python的规则,不包含后边一个数
numbers.append(number)
print(number)
print(numbers)
"""output
1
2
3
4
[1, 2, 3, 4]
"""
4.3 数值列表简单统计计算
-
min() 最小
-
max() 最大
-
sum() 求和
numbers = [1, 2, 3, 4]
print(min(numbers)) # 1
print(max(numbers)) # 4
print(sum(numbers)) # 10
4.4列表解析
- 简化4.2的代码
# 普通的range()生成[1,10]的平方
numbers = []
for value in range(1,11):
number = value**2 # ** 表示乘方
numbers.append(number)
print(numbers)
# 列表解析 生成[1,10]的平方
numbers = (number**2 for value in range(1, 11))
print(numbers)
4.5 切片:处理部分元素
- 切片:提取你想看到/想操作的元素
- [start_index : end_index]
- 规则,不包含后面的索引
- []中括号 :冒号
nums = [0, 1, 2, 3, 4] # 切片:根据需求取出想看到的元素
print(nums[0:3]) # [0, 1, 2] 一共三个元素,从0开始
print(nums[:3]) # [0, 1, 2] 缺省start_index,默认从0开始
print(nums[2:]) # [2, 3, 4] 缺省end_index,默认读到末尾
print(nums[2:5]) # [2, 3, 4] 从start_index开始,但不包含end_index
print(nums[-3:]) # [2, 3, 4] 负索引,列表的后几项元素
print(nums[:]) # 都缺省,表全部 [0, 1, 2, 3, 4]
遍历切片
nums = [0, 1, 2, 3, 4] # 切片:根据需求取出想看到的元素
for num in nums[:3]: # 遍历打印,列表前三个元素
print(num) # 0 1 2 (其余遍历以此类推)
复制列表
nums = [0, 1, 2, 3, 4]
nums_1 = nums # 错误,不可行
nums_1 = nums[:] # 正确,这样才对!!!
# 部分复制,也用切片
4.6 元组:特殊的列表
- 元组,元素不可改
- () 圆括号 ,逗号
- 其余和列表一样
- 想要修改元组的内容,只有对整个元组重新赋值
- append()、sort()…仍然适用
nums = (0, 1, 2, 3, 4)
nums[0] = 2319 # 程序终止,元组的元素,不可单独修改
nums = (5, 6, 7, 8, 9) # 但元组可以重新赋值