IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> CodingLifeDay2:Python:基本数据结构和函数 -> 正文阅读

[数据结构与算法]CodingLifeDay2:Python:基本数据结构和函数

1,基本数据结构及常用操作

①列表:List = [Elem1,Elem2,Elem3]

"""
列表:
①增:list.append(Elem)----------末尾追加,Elem作为list的一个元素
list.extend(Elem)---------------末尾扩展,Elem的每一个元素逐一append到list中
list.insert(location,Elem)------把Elem插入到list的下标为location的地方
②删:del list[location]---------删除list的下标为location的元素
list.pop()----------------------删除最后一个元素,可以返回这个元素
list.remove(Elem)---------------删除指定内容的元素,重复时只删除第一个
③改:list[location]=Elem--------修改list的下标为location的元素为Elem
④查:if Elem in list:-----------直接使用判断语句判断Elem是否存在于list中
list.index(Elem,loc1,loc2)------如果list下标在[loc1,loc2)的元素里存在Elem,返回Elem的下标,找不到会报错
list.count(Elem)----------------返回list中Elem的个数
len(list)-----------------------返回list中元素的个数
for i,x in enumerate(list)------同时获得list的元素内容和下标,下标i从0开始
⑤排序:list.reverse()-----------列表元素反转
list.sort()---------------------列表升序排序
list.sort(reverse=True)---------列表降序排序
"""

②元组:Tuple = (Elem1,Elem2,Elem3)。元组内容无法被修改。

"""
元组:
创建只有一个元素的元组,要在第一个元素后面加一个逗号。 tuple(Elem,)
①增:tuple=tuple1+tuple2--------新建一个元组,内容为两个元组相连
②删:del tuple------------------删除整个元组,无法再次被访问
"""

③字典:Dict =?{key1 : value1, key2 : value2 }

"""
字典:
使用键值对方式存储:key:value。键必须使用不可变类型,键必须是唯一的。
①访问:dict[key]----------------使用键访问值,不存在目标键时会报错
dict.get(key,str)---------------找到了返回key对应的值,没有找到默认返回None,也可设定返回str
②增:dict[newkey]=newvalue------新增键值对newkey:newvalue
③删:del dict[key]--------------删除字典的键为key的键值对
del dict------------------------删除整个字典,无法再次被访问
dict.clear()--------------------清空字典所有元素 
④改:dict[key]=newvalue---------key对应的值被修改为newvalue
⑤查:dict.keys()----------------以列表形式返回所有键
dict.values()-------------------以列表形式返回所有值
dict.items()--------------------以列表形式返回所有键值对,每一个键值对是一个元组
for key,value in dict.items()---for循环形式获得所有键值对
其他操作:len,max,min,dict(转化为字典格式)
"""

④集合:Set = {Elem1,Elem2,Elem3}

"""
集合:
集合是无序的:因此无法用set[location]的方法访问;集合是不重复的:因此相同元素只会存储一个。
①访问:for item in set:---------for循环遍历集合元素
②增:set.add(Elem)--------------新增元素Elem,注意:新增元素并非依次增加到集合末尾。
set.update([Elem1,Elem2])-------新增多个元素
③删:set.remove(Elem)-----------删除指定元素Elem,若Elem不存在,会引发错误
set.discard(Elem)---------------删除指定元素Elem,若Elem不存在,不会引发错误
set.pop()-----------------------删除最后元素,注意:你无法得知删除的是哪一个元素
set.clear()---------------------清空整个集合
del set-------------------------删除集合,无法再次被访问
④合并:set3 = set1.union(set2)---返回一个新集合,其中包含两个集合中的所有项目,重复项将被排除
"""

2,函数

"""
函数中调用全局变量:global variable
在一个函数中调用了全局变量并修改其值,再次调用此变量,得到的值是修改后的。
"""

"""
关于函数传参,有以下几个问题值得注意:

①调用函数时可使用关键字传参,这时不必考虑参数的顺序。
def sum(x,y):
    return x+y;
sum(y=5,x=3)

②定义函数时可以默认参数值:
def sum(x,y=3):
    return x+y;
这时调用函数,如果y没有传入值,则使用默认值;如果y有传入值,则使用传入的值。

③定义函数时形参表中若有*,则*后面的参数都必须使用关键字传入:
def sum(x,*,y):
    return x+y;
sum(5,y=7)

④可以在形参表中用*variable的格式接收多个参数的传入。也可以用variable接收函数的多个返回值。
def f(*argvs):
    for i in argvs:
        print(i)
    A, B = argvs
    return A + B, A - B

temp = f(5, 3)
C, D = temp
print(C, D, *temp)
"""

①闭包

"""
当一个函数运行结束后,函数内部所有变量都会被释放。如果希望它的某些变量继续被使用,就可以使用闭包的方法:
在函数内定义一个内部函数,内部函数调用需要继续被使用的变量,外部函数将内部函数作为返回值。
"""

# 下面这个例子使用闭包的方法计算x的y次方:
def OutFunc(y):
    def InFunc(x):
        print(x ** y)

    return InFunc

temp = OutFunc(3)  # 计算一些数的三次方
temp(3)  # 27 : 3 ** 3
temp(5)  # 125 : 5 ** 3

# 如果想要修改调用的局部变量的值,使用nonlocal关键字。
"""
例如在上面的InFunc中加入这两行代码:
nonlocal y
y += 1
可以使得每次调用InFunc时幂次加一,同样的运行结果会是81和3125(分别是3的4次方和5的5次方)
"""

②匿名函数

"""
FunctionName = lambda variable1, variable2: Expression
匿名函数没有return语句,Expression既是对变量的操作,也是函数返回的内容
调用匿名函数,使用FunctionName
"""

# 这是一个实例,用于计算x的y次方
func = lambda x, y: x ** y
print(func(2,5)) #32

③生成器函数

"""
得到生成器有三种方法:
①使用生成器表达式:gen = (expression range),例如gen = (x*3 for x in range(5))
②函数使用yield返回值。
③yield from语法:yield from object 等价于 for item in object : yield item
输出生成器内容:
①使用next方法:每次返回一个值,返回完最后一个值再次调用会报错:StopIteration
使用方法是:print(next(gen)),print(gen.__next__())
②使用for循环:
for i in gen:
    print(i)
"""

# 1
gen = (x*3 for x in range(5))
# 2
def test_func1():
    a = 1
    yield  a
    a = 2
    yield  a
    a = 3
    yield  a
gen = test_func1()
# 3
list = ["Apple","Pear","Orange"]
def test_func2():
    yield from list
gen = test_func2()

④装饰器

"""
装饰器:在不改变原函数代码的情况下,为其增加一些功能。
在下面的例子中,装饰器通过“装饰前的代码”和“装饰后的代码”为func新增某些功能。
def wrapper(func): # wrapper是装饰器函数,func是被装饰函数
    def inner(variable): # variable是func需要传入的参数
        # 装饰前的代码
        ret = func(variable)  # ret是func返回的结果
        # 装饰后的代码
        return ret

    return inner
调用装饰器函数的方法是在原函数def行的上一行写上@wrapper
调用后执行func的过程实际上是在执行inner函数
"""

# 这是一个实例,装饰器用于打印函数的运行时间
import time

def wrapper(func):
    def inner(variable):
        start_time = time.time()
        ret = func(variable)
        stop_time = time.time()
        print(stop_time - start_time)
        return ret

    return inner

@wrapper
def test_func(num):
    for i in range(num):
        print("Hello,world")
    return num + 1

x = int(input("Input:"))
print(test_func(x))
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:53:22  更:2021-07-31 16:53:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 9:41:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码