List列表、Tuple元组的练习

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

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

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

# 定义函数
def is_repeat(lst):
    for x in lst:
        if lst.count(x) > 1:
            return True

    return False

# 调用函数
a = [1,-2,3,6,11,-2]
print(is_repeat(a))

输出结果:

True

列表反转

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

# 定义函数
def reverse(lst):
    return lst[::-1]

# 调用函数
a = [1,-2,3,6,11,-2]
print(reverse(a))

输出结果:

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

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

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

# 定义函数
def find_repeat_ele(lst):
    ret = []
    for x in lst:
        # 次数大于 1,并且不在新的 列表中
        if lst.count(x) > 1 and x not in ret:
            ret.append(x)
    return ret

# 调用函数
a = [1,3,12,3,4,3,-1,4]
print(find_repeat_ele(a))

输出结果:

[3, 4]

斐波那契数列

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

方法一

# 定义函数
def fibonacci(n):
    if n <= 1:
        return [1]
    a = [1,1]
    while len(a) < n:
        a.append(a[len(a) - 1] + a[len(a) - 2])
    return a


# 调用函数
a = fibonacci(5)
print(a)

输出结果:

[1, 1, 2, 3, 5]

方法二

# 定义函数
def fibonacci(n):
    a,b = 1,1
    for _ in range(n):
        # 遇到 yield 返回,下次再进入函数体时,从 yield 的下一句开始执行
        yield a
        a,b = b,a + b


# 调用函数
a = list(fibonacci(5))
print(a)

输出结果:

[1, 1, 2, 3, 5]

出镜最多

求出现频次最多的元素。

# 定义函数
def much(lst):
    if not lst:
        return None
    return max(lst,key=lambda v: lst.count(v))



# 调用函数
a = [1,2,3,4,1,1,1,3,3]
r = much(a)
print('出现次数最多的元素为:',r)

输出结果:

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

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

改进代码:

# 定义函数
def much(lst):
    if not lst:
        return None
    # 取出list中出现次数最多的元素
    max_freq_ele = max(lst,key=lambda v: lst.count(v))
    # 记录这个元素出现的次数
    max_freq = lst.count(max_freq_ele)
    ret = []
    for i in lst:
        if i not in ret and lst.count(i) == max_freq:
            ret.append(i)
    return ret



# 调用函数
a = [1,3,3,4,1,1,1,3,3]
r = much(a)
print('出现次数最多的元素为:',r)

输出结果:

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

更长列表

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

# 定义函数
def max_len_list(*lists):
    # v 代表一个 list,其长度作为大小比较的依据
    return max(*lists, key=lambda v: len(v))


# 调用函数
a = max_len_list([1,2,3],[4,5,6,7],[8])
print(a)

输出结果:

[4, 5, 6, 7]

求列表头

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

# 定义函数
def list_head(list):
    return list[0] if len(list) > 0 else None


# 调用函数
a = list_head([])
b = list_head([3,1,5])
print(a)
print(b)

输出结果:

None
3

求列表尾

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

# 定义函数
def list_end(list):
    return list[-1] if len(list) > 0 else None


# 调用函数
a = list_end([])
b = list_end([3,1,5])
print(a)
print(b)

输出结果:

None
5

打印乘法表

# 定义函数
def mult_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()


# 调用函数
mult_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

样本抽样

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

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

输出结果:

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

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

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

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

输出结果:

[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 绘图

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()

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值