List列表、Tuple元组的练习

清疚 2023-03-02 05:10 23阅读 0赞

下面写一些使用 List列表 和 Tuple元组 的常用例子,编辑器使用 IDLE

判断 List 列表对象中有无重复元素

遍历List 列表,分别判断每个元素出现的次数,如果大于1,则返回True,如果没有重复的元素,返回 False 。

  1. # 定义函数
  2. def is_repeat(lst):
  3. for x in lst:
  4. if lst.count(x) > 1:
  5. return True
  6. return False
  7. # 调用函数
  8. a = [1,-2,3,6,11,-2]
  9. print(is_repeat(a))

输出结果:

  1. True

列表反转

使用切片,一行代码实现列表反转。

  1. # 定义函数
  2. def reverse(lst):
  3. return lst[::-1]
  4. # 调用函数
  5. a = [1,-2,3,6,11,-2]
  6. print(reverse(a))

输出结果:

  1. [-2, 11, 6, 3, -2, 1]

找出列表中所有重复的元素

遍历列表,如果出现次数大于 1,且不在返回列表中,则添加到新的列表。

  1. # 定义函数
  2. def find_repeat_ele(lst):
  3. ret = []
  4. for x in lst:
  5. # 次数大于 1,并且不在新的 列表中
  6. if lst.count(x) > 1 and x not in ret:
  7. ret.append(x)
  8. return ret
  9. # 调用函数
  10. a = [1,3,12,3,4,3,-1,4]
  11. print(find_repeat_ele(a))

输出结果:

  1. [3, 4]

斐波那契数列

第一、二个元素都为 1,第三个元素等于前两个元素和,依次类推。

方法一

  1. # 定义函数
  2. def fibonacci(n):
  3. if n <= 1:
  4. return [1]
  5. a = [1,1]
  6. while len(a) < n:
  7. a.append(a[len(a) - 1] + a[len(a) - 2])
  8. return a
  9. # 调用函数
  10. a = fibonacci(5)
  11. print(a)

输出结果:

  1. [1, 1, 2, 3, 5]

方法二

  1. # 定义函数
  2. def fibonacci(n):
  3. a,b = 1,1
  4. for _ in range(n):
  5. # 遇到 yield 返回,下次再进入函数体时,从 yield 的下一句开始执行
  6. yield a
  7. a,b = b,a + b
  8. # 调用函数
  9. a = list(fibonacci(5))
  10. print(a)

输出结果:

  1. [1, 1, 2, 3, 5]

出镜最多

求出现频次最多的元素。

  1. # 定义函数
  2. def much(lst):
  3. if not lst:
  4. return None
  5. return max(lst,key=lambda v: lst.count(v))
  6. # 调用函数
  7. a = [1,2,3,4,1,1,1,3,3]
  8. r = much(a)
  9. print('出现次数最多的元素为:',r)

输出结果:

  1. 出现次数最多的元素为: 1

如果出镜最多的元素有多个时,按照以上方法,只会返回一个,所以对上面的代码进行改进。

改进代码:

  1. # 定义函数
  2. def much(lst):
  3. if not lst:
  4. return None
  5. # 取出list中出现次数最多的元素
  6. max_freq_ele = max(lst,key=lambda v: lst.count(v))
  7. # 记录这个元素出现的次数
  8. max_freq = lst.count(max_freq_ele)
  9. ret = []
  10. for i in lst:
  11. if i not in ret and lst.count(i) == max_freq:
  12. ret.append(i)
  13. return ret
  14. # 调用函数
  15. a = [1,3,3,4,1,1,1,3,3]
  16. r = much(a)
  17. print('出现次数最多的元素为:',r)

输出结果:

  1. 出现次数最多的元素为: [1, 3]

更长列表

带有一个 * 的参数为可变置参数,意味着能传入任意多个位置参数。

  1. # 定义函数
  2. def max_len_list(*lists):
  3. # v 代表一个 list,其长度作为大小比较的依据
  4. return max(*lists, key=lambda v: len(v))
  5. # 调用函数
  6. a = max_len_list([1,2,3],[4,5,6,7],[8])
  7. print(a)

输出结果:

  1. [4, 5, 6, 7]

求列表头

返回列表的第一个元素,如果列表为空,则返回None 。

  1. # 定义函数
  2. def list_head(list):
  3. return list[0] if len(list) > 0 else None
  4. # 调用函数
  5. a = list_head([])
  6. b = list_head([3,1,5])
  7. print(a)
  8. print(b)

输出结果:

  1. None
  2. 3

求列表尾

求列表的最后一个元素,如果列表为空,则返回None 。

  1. # 定义函数
  2. def list_end(list):
  3. return list[-1] if len(list) > 0 else None
  4. # 调用函数
  5. a = list_end([])
  6. b = list_end([3,1,5])
  7. print(a)
  8. print(b)

输出结果:

  1. None
  2. 5

打印乘法表

  1. # 定义函数
  2. def mult_table():
  3. for i in range(1,10):
  4. for j in range(1,i+1):
  5. print(str(j) + str("*") + str(i) + "=" + str(i*j), end="\t")
  6. print()
  7. # 调用函数
  8. mult_table()

输出结果:

  1. 1*1=1
  2. 1*2=2 2*2=4
  3. 1*3=3 2*3=6 3*3=9
  4. 1*4=4 2*4=8 3*4=12 4*4=16
  5. 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
  6. 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
  7. 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
  8. 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
  9. 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

样本抽样

假设有 100 个样本,然后从中随机抽取 10 个。

  1. # 从 random 模块导入 randint 和 sample函数
  2. from random import randint,sample
  3. # randint 生成随机整数
  4. lst = [randint(0,50) for _ in range(100)]
  5. print(lst[:5])
  6. # sample 从 lst 中抽样 10 个元素
  7. lst_sample = sample(lst,10)
  8. print(lst_sample)

输出结果:

  1. [4, 25, 18, 43, 48]
  2. [36, 28, 25, 13, 11, 26, 35, 17, 19, 2]

生成满足均匀分布的点坐标

random模块中的uniform(a,b) 可以在[a,b)之间生成 一个随机数。

  1. from random import uniform
  2. x, y = [i for i in range(100)], [round(uniform(0, 10), 2) for _ in range(100)]
  3. print(y)

输出结果:

  1. [9.84, 2.68, 1.88, 1.67, 5.88, 6.55, 4.85, 4.26, 9.27, 5.97, 0.89, 8.23, 9.81, 6.32, 6.45, 1.73, 7.32, 8.49, 0.05, 9.87, 7.15, 9.15, 7.8, 0.19, 4.04, 7.32, 7.73, 8.68, 7.37, 7.51, 1.38, 0.35, 8.04, 7.78, 6.34, 6.13, 6.6, 5.57, 3.7, 8.52, 0.77, 7.09, 8.05, 9.02, 3.69, 9.0, 0.18, 9.83, 9.97, 0.6, 5.32, 1.04, 4.41, 5.18, 6.52, 4.95, 3.62, 3.24, 3.98, 5.02, 5.63, 1.84, 4.51, 5.54, 3.59, 3.68, 5.18, 1.41, 1.01, 5.53, 4.86, 1.8, 5.56, 2.79, 1.86, 8.55, 0.67, 9.73, 4.16, 7.88, 0.81, 6.95, 5.36, 0.26, 6.59, 5.84, 3.35, 2.01, 2.7, 1.32, 1.43, 5.86, 8.95, 9.33, 4.88, 0.09, 7.15, 8.74, 2.54, 2.63]

使用 PyEcharts 绘图

  1. from pyecharts.charts import Scatter
  2. import pyecharts.options as opts
  3. from random import uniform
  4. # 定义函数
  5. def draw_uniform_points():
  6. x, y = [i for i in range(100)], [
  7. round(uniform(0, 10), 2) for _ in range(100)]
  8. print(y)
  9. c = (Scatter().add_xaxis(x).add_yaxis('y',y))
  10. c.render()
  11. # 调用函数
  12. draw_uniform_points()

如果提示:No module named ‘pyecharts’,请使用命令 pip install pyecharts进行安装,安装完,执行程序。就会在 .py 文件所在目录生成 HTML 文件,打开就能看到 echarts 画的图了。

format_png

根据图示可得,变量 y 满足 均匀分布。

发表评论

表情:
评论列表 (有 0 条评论,23人围观)

还没有评论,来说两句吧...

相关阅读