06.
list和tuple的13个经典案列
大家好,我是小C,上期给大家分享带来——List和 tuple的13个经典案列-01
本期分享内容:List和 tuple的13个经典案列(完结篇)
本专栏小C邀请的是zglg (某大厂算法工程师)和Alicia (美国顶尖学府 AI 博士后)两位为我们分享Python全栈精通之路。
作者有话说
很多人问为什么要写这个专栏?
因为我也有过那段“自学” Python 的迷茫时期,所以深知一个好的系统学习规划和老师讲解,是能够达到事半功倍省下我们程序员更多青春的关键。
别的老师在介绍知识点时都会说“这东西是什么”,但我不想这样做。
我觉得“为什么这东西是这样”或者“在什么场景适应什么需求有什么好处才会用这东西”,反而更能让你们对知识本身会有更深刻的理解。
PYTHON
list和tuple的13个经典案列(完结)
前几天与小伙伴们分享了13个案例的前六点,今日小C继续为大家分享剩下的7点。
昨日漏学的小伙伴可戳这查看详情哦——List和 tuple的13个经典使用案列-01”
7. 求表头
返回列表的第一个元素,注意列表为空时,返回 None。
通过此例,学会使用 if 和 else 的这种简洁表达。
In [18]: def head(lst):
...: return lst[0] if len(lst) > 0 else None
调用 head:
In [19]: print(head([]))
...: print(head([3, 4, 1]))
None
3
8. 求表尾
求列表的最后一个元素,同样列表为空时,返回 None。
In [20]: def tail(lst):
...: return lst[-1] if len(lst) > 0 else None
调用 tail:
In [21]: print(tail([]))
...: print(tail([3, 4, 1]))
None
1
9. 打印乘法表
外层循环一次,print(),换行;内层循环一次,打印一个等式。
In [26]: def mul_table():
...: for i in range(1, 10):
...: for j in range(1, i + 1):
...: print(str(j) + str("*") + str(i)+"=" + str(i*j), end="\t")
...: print() # 打印一个换行
调用 mul_table:
In [27]: mul_table()
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
10. 元素对
· t[:-1]:原列表切掉最后一个元素;
· t[1:]:原列表切掉第一个元素;
· zip(iter1, iter2):实现 iter1 和 iter2 的对应索引处的元素拼接。
In [32]: list(zip([1,2],[2,3]))
Out[32]: [(1, 2), (2, 3)]
理解上面,元素组对的实现就不难理解:
In [28]: def pair(t):
...: return list(zip(t[:-1],t[1:])) # 生成相邻元素对
调用 pair:
In [29]: pair([1,2,3])
Out[29]: [(1, 2), (2, 3)]
In [30]: pair(range(10))
Out[30]: [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)]
11. 样本抽样
内置 random 模块中,有一个 sample 函数,实现“抽样”功能。
下面例子从 100 个样本中,随机抽样 10 个。
· 首先,使用列表生成式,创建长度为 100 的列表 lst;
· 然后,sample 抽样 10 个样本。
In [33]: from random import randint,sample
...: lst = [randint(0,50) for _ in range(100)] # randint 生成随机整数;
...: print(lst[:5])
...: lst_sample = sample(lst,10) # sample 从 lst 中抽样 10 个元素
...: print(lst_sample)
[0, 38, 31, 33, 43]
[9, 43, 31, 22, 31, 30, 14, 47, 14, 1]
12. 重洗数据集
内置 random 中的 shuffle 函数,能冲洗数据。
值得注意,shuffle 是对输入列表就地(in place)洗牌,节省存储空间。
In [34]: from random import shuffle
...: lst = [randint(0,50) for _ in range(100)]
...: shuffle(lst) # 重洗数据
...: print(lst[:5])
[22, 49, 34, 9, 38]
13. 生成满足均匀分布的坐标点
random 模块,uniform(a,b) 生成 [a,b) 内的一个随机数。
如下,借助列表生成式,生成 100 个均匀分布的坐标点。
from random import uniform
x, y = [i for i in range(100)], [
round(uniform(0, 10), 2) for _ in range(100)]
print(y)
[3.09, 9.02, 1.87, 1.43, 4.25, 9.66, 9.11, 0.12, 3.3, 2.35, 0.15, 0.34, 6.47, 9.47, 8.63, 8.41, 6.02, 2.87, 5.93, 2.29, 8.61, 4.71, 6.87, 7.42, 0.53, 3.04, 6.02, 7.51, 0.3, 0.27, 6.6, 7.48, 9.96, 8.05, 0.09, 1.07, 6.77, 6.98, 5.96, 2.1, 0.32, 9.12, 2.11, 0.45, 9.74, 3.33, 9.72, 8.4, 0.77, 9.75, 4.61, 5.37, 1.59, 7.8, 0.88, 1.2, 8.21, 8.06, 8.97, 2.02, 8.32, 8.56, 5.74, 5.03, 0.65, 5.84, 3.67, 5.38, 8.13, 2.0, 0.75, 1.92, 5.27, 0.65, 8.29, 9.28, 3.28, 3.6, 1.76, 4.44, 1.15, 9.89, 1.65, 6.75, 0.62, 4.97, 7.03, 6.48, 8.14, 1.8, 7.41, 7.06, 3.73, 5.37, 7.17, 6.94, 3.13, 0.29, 4.36, 6.17]
使用 PyEcharts 绘图,版本 1.6.2。
注意,运行以下代码至少保证版本要在 1.0 以上:
from pyecharts.charts import Scatter
import pyecharts.options as opts
from random import uniform
def draw_uniform_points():
x, y = [i for i in range(100)], [
round(uniform(0, 10), 2) for _ in range(100)]
print(y)
c = (
Scatter()
.add_xaxis(x)
.add_yaxis('y', y)
)
c.render()
draw_uniform_points()
得到结果如下,变量 y 取值满足均匀分布。
执行程序,会在 py 文件所在目录生成一个 HTML 文件,打开会查看到下图。
小结
今天与大家一起学习 13 个使用列表和元组的案例。
涉及到切片操作、key 函数、zip 连接等 Python 中最常用的知识点。
希望大家手动敲敲代码,找找 Python 编码的乐趣,为后面的学习打下坚实的基础。
今日内容有get吗,欢迎各位留言讨论!
下期预告:dict 和 set 基本操作、字典视图等 6 个方面详解总结
以上专栏均来自CSDN GitChat专栏《Python全栈60天精通之路》,作者zglg、Alicia,专栏详情可识别下方二维码查看哦!
了解更多详情
可识别下方二维码
往期推荐