智泊Python--Day5
智泊Python–Day5
Day5 是 Python 里最常用的容器——列表(list)。它相当于其它语言里的「数组」,但更灵活:长度可变、可存不同类型、自带一堆好用的方法。这一天信息量很大,重点是吃透索引(含负索引)、**切片 [start:end:step]**(尤其用负步长反转列表)、以及 append/insert/extend/pop/remove/sort 这几个高频方法。最后还补充了 math 和 random 两个数学相关标准库。
1.列表的基本使用
列表用方括号定义,允许存不同类型(但不建议混用,可读性差)。索引用 nums[i],负索引 nums[-1] 表示倒数第一个。遍历有四种姿势:直接 for x in 列表、range(len) 拿索引、enumerate 拿「索引+元素」。切片 是重中之重:[start:end:step],左闭右开,步长为负时从右往左取(反转列表 nums[::-1])。+ 合并列表、* 重复列表、in 判断成员。列表去重则用「新空列表 + 不在则 append」的套路。
1 | |
2.列表的练习
两个小练习巩固索引与遍历:
- ① 从
list1中删除属于list2的元素(遍历 list2、命中就remove) - ② 用负索引
names[-2]或正索引names[3]取「黄忠」 - ③ 输出索引为奇数位置的元素(注意这里「奇数索引」指下标为奇数,不是元素值奇数)
1 | |
3.列表的功能
列表自带的方法按用途分四类。增:append(n) 末尾加一个、insert(i, n) 指定位置插、extend(可迭代) 合并另一个序列的所有元素。删:pop(i) 按索引删并返回该元素(不填默认删最后一个)、remove(x) 删第一个值等于 x 的元素、clear() 清空。查:index(x) 返回首次出现的下标(没有则报错)、count(x) 统计个数。排序:sort() 原地升序(可 reverse=True 降序)、sorted() 返回新列表不改动原列表;reverse() 原地把列表反转,reversed() 返回反转后的可迭代对象(需 list() 转换)。copy() 是浅拷贝——num1 = num 只是让两个变量指向同一个列表,改一个另一个也变。
1 | |
4.列表进阶练习
三个综合小练:
- ① 把每个元素翻倍(用索引
nums[i] *= 2,注意这会原地修改原列表) - ②
append加末尾、insert(0, x)插最前 - ③ 不用
min()自己实现求最小值——先拿第一个当擂主,遍历比它小的就替换
1 | |
5.math 数学操作
内置函数 sum/max/min/round/abs/pow 直接可用;math 标准库补充了更专业的数学能力:math.pi、math.e、math.inf(无穷大)、sqrt(开方)、factorial(阶乘)、ceil/floor(上下取整)、log/log10(对数)。写数值相关程序时这两个是常客。
1 | |
6.random 随机数
random 标准库生成各类随机数:choice 从序列随机取一个、randint(a,b) 是闭区间 [a,b]、randrange(a,b) 是左闭右开 [a,b) 且可指定步长、random() 返回 [0,1) 浮点、uniform(a,b) 返回 [a,b] 浮点、shuffle 原地打乱列表。做小游戏、抽样、验证码时极常用。
1 | |
7.作业
names 列表的一系列综合操作,覆盖插入、改名、合并、切片等。注意 extend 是原地合并且返回 None——所以 print(names.extend(...)) 会打印 None;想看到合并结果要分开写:先 names.extend(...) 再 print(names)。
1 | |