from random import sample,randint,shuffle,uniform
from pyecharts.charts import Scatter # pyecharts 如果没有需要通过 pip 安装
import pyecharts.options as opts
# 判断 list 内有没有重复元素
def is_duplicated(lst):
for x in lst:
if lst.count(x) > 1:
return True
return False
one = [1,-2,3,4,5,6,7,8,9,0]
print(is_duplicated(one))
def is_duplicateds(lst):
return len(lst) != len(set(lst))
two = [1,-2,3,4,5,6,7,8,9,0,1]
print(is_duplicateds(two))
# 列表反转
def reverse(lst):
return lst[::-1]
three = [1,-2,3,4,5,6,7,8,9,0]
print(reverse(three))
# 找出列表中的所有重复元素
def find_duplicate(lst):
ret = []
for x in lst:
if lst.count(x) > 1 and x not in ret:
ret.append(x)
return ret
fore = [1,-2,3,4,5,6,7,8,9,0,5,3]
print(find_duplicate(fore))
# 斐波那契数列
# 普通版本
def fibonacci(n):
if n <=1:
return [1]
fib = [1,1]
while len(fib) < n:
fib.append(fib[len(fib) - 1] + fib[len(fib) - 2] )
return fib
fi = fibonacci(8)
print(fi)
# 生成器版本 使⽤ Python 的⽣成器,保证代码简洁的同时,还能节省内存:
def fibonaccis(n):
a,b=1,1
for _ in range(n):
yield a # 遇到 yield 返回,下次再进⼊函数体时,从 yield 的下⼀句开始执⾏
a,b = b,a+b
fis = list(fibonaccis(10))
print(fis)
# 求出现频次最多的元素 以下只返回一个
def mode(lst):
if not lst:
return None
return max(lst,key=lambda v:
lst.count(v)) # v 在 lst 的出现次数作为⼤⼩⽐较的依据
lstOne = [1, 3, 3, 2, 1, 1, 2,3,5,3,3,3,3,3]
overLst = mode(lstOne)
print(overLst)
# 以下返回多个,相同多的元素
def modes(lst):
if not lst:
return None
max_freq_elem = max(lst,key=lambda v: lst.count(v))
max_freq = lst.count(max_freq_elem) # 出现最多次数
ret = []
for i in lst:
if i not in ret and lst.count(i)==max_freq:
ret.append(i)
return ret
lstTwo = [1, 3, 3, 2, 1, 1, 2,3,5,3,3,3,3,3,1,1,1,1,1]
overLstt = modes(lstTwo)
print(f' 具有多个相同数量的元素是: {overLstt}')
# 更长列表 带有⼀个 * 的参数为可变的位置参数,意味着能传⼊任意多个位置参数。 key 函数定义怎么⽐较⼤⼩:lambda 的参数 v 是 lists 中的⼀个元素
def max_len(*lst):
return max(*lst,key=lambda v: len(v)) # v 代表⼀个 list,其⻓度作为⼤⼩⽐较的依据
maxl = max_len([1,2,3,4],[4,5,6,7,3],[8,9])
print(f' 更长的列表是:{maxl}')
# 求第一个值 返回列表的第⼀个元素,注意列表为空时,返回 None。 通过此例,学会使⽤ if 和 else 的这种简洁表达
def head(lst):
return lst[0] if len(lst) > 0 else None
print(f' 列表为空返回None:{head([])}')
print(f' 列表不为空的时候返回第一个值: {head([4,5,6,8])}')
# 求最后一个值
def head(lst):
return lst[-1] if len(lst) > 0 else None
print(f' 列表为空返回None:{head([])}')
print(f' 列表不为空的时候返回最后一个值: {head([4,5,6,8])}')
# 元素对 没有理解这个的作用是什么
# t[:-1] :原列表切掉最后⼀个元素;
# t[1:] :原列表切掉第⼀个元素;
# zip(iter1, iter2) :实现 iter1 和 iter2 的对应索引处的元素拼接。
ls = list(zip([1,2],[2,3]))
print(f' 元素对是:{ls}')
# 生成相邻元素对
def pair(r):
return list(zip(r[:-1],r[1:]))
pa = pair(range(15))
print(f'生成15个相邻元素对:{pa}')
# 样本抽样 内置 random 模块中,有⼀个 sample 函数,实现抽样
功能。
# 从100个样本中,随机抽样10个
lstthree = range(150)
print(f'range返回的数据是:{lstthree}')
lstthree = [randint(0,50) for _ in range(100)]
print(f'生成100个整数:{lstthree}')
print(f'输出前5个数:{lstthree[:5]}')
lstthree_sample = sample(lstthree,10)
print(f'随机抽样10个数:{lstthree_sample}')
# 重洗数据集 内置 random 中的 shuffle 函数,能冲洗数据。值得注意,shuffle 是对输⼊列表就地(in place)洗牌,节省存储空间
lstFor = [randint(0,50) for _ in range(100)]
print(f' 重洗数据集生成100个整数:{lstFor}')
shuffle(lstFor)
print(f'重洗牌后的前5个数:{lstFor[:5]}')
print(f'重洗牌后的所有数:{lstFor}')
# ⽣成满⾜均匀分布的坐标点 random 模块,uniform(a,b) ⽣成 [a,b) 内的⼀个随机数。 借助列表⽣成式,⽣成 100 个均匀分布的坐标点。
x,y = [i for i in range(100)],[round(uniform(0,10),2) for _ in range(100)]
print(f'X的坐标点是:{x}')
print(f'Y的坐标点是:{y}')
# 使⽤ PyEcharts 绘图,版本 1.6.2。
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()
list 和tuple 的经典引用案例
2024-04-26
-
字
-
“您的支持是我持续分享的动力”
微信
支付宝