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 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python 小提高 -> 正文阅读

[Python知识库]python 小提高

错综复杂的复制

浅拷贝

list1=[1,2,3,4]
list2=list1   #或者list1[:]  list(list1)均可实现浅拷贝
list2.append(5)
print(list1)
print(list2)

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]

修改一个列表,另外一个列表也会变换

列表的底层实现:

列表内的元素可以分散的存储在内存中

列表存储的,实际上是这些元素的地址------地址的存储在内存中是连续的

浅拷贝是将地址复制了一份给别的变量名

但是对元组操作时又不一样,这个时候像深拷贝

深拷贝 使用copy()

list1=[1,2,3,4]
list2=list1.copy()
list2.append(5)
print(list1)
print(list2)

[1, 2, 3, 4]
[1, 2, 3, 4, 5]

可变类型: 列表,字典,集合

id保持不变,但是里面的内容可以变

可变对象+=操作 实际在原对象的基础上就地修改

更加简洁的语法

创建多维列表

ls=[[0]*10 for i in range(5)]
ls
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

解析语法的基本结构----以列表解析为例(也称为列表推导)
[expression for value in iterable if conditihon]

三要素: 表达式,可迭代对象,if条件(可选)

执行过程:

  1. 从可迭代对象中拿出一个元素

  2. 通过if条件(如果有的话),对元素进行筛选

    若通过筛选,则将元素传给表达式

    若未通过,则进入下一次迭代

    ?

  3. 将传递给表达式的元素,代入表达式进行处理,产生一个结构

  4. 将第三步产生的结果作为列表的一个元素进行存储

  5. 重复1-4 步,直到迭代对象迭代结束,返回新创建的列表

#求20以内奇数的平方
res=[i**2 for i in range(1,21) if i%2==1]
print(res)

[1, 9, 25, 49, 81, 121, 169, 225, 289, 361]

?

支持多变量

x=[1,2,4]
y=[2,3,4]
res=[i*j for i, j in zip(x,y)]
res

[2, 6, 16]

支持循环嵌套

其它字典,集合的推导也类似

条件表达式

expr1 if condition else expr2

如果条件成立,执行expr1

如果不成立,执行expr2

#将n的绝对值赋予x
n=10
x=n if n>=0 else -n
x

生成器

采用惰性计算的方式

无需一次性存储海量数据

一边执行一边计算,只计算每次需要的值

实际上一直在执行next()操作,直到无值可取

生成器表达式 ()

res=(i**2 for i in range(1000000))

生成器函数----yield

def fib(max):
    n,a,b=0,1,1
    while n<max:
        yield a
        a,b=b, a+b
        n=n+1
fib(10)

在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行

迭代器

可迭代对象:

可以直接作用于for循环的对象统称为可迭代对象:iterable

列表,元组,字符串,字典,集合,文件

装饰器

需要对已开发上线的程序添加某些功能

不能对程序中函数的源代码进行修改

不能改变程序中函数的调用方式

高阶函数

  1. 接收函数作为参数
  2. 或者返回一个函数

满足上述条件之一的函数称之为高阶函数

def squ(x):
    return x**2

def pow (fun):
    return fun

f=pow(squ)
f(8)

64
#上面的pow便是一个高阶函数

嵌套函数

在函数内部定义一个函数

def outer():
    print("outer is running ")
    
    def inner():
        print("inner is ruuning ")
    inner()
    
outer()

outer is running 
inner is ruuning 

先执行外部函数,再执行内部函数

闭包:延申了作用域的函数

如果一个函数定义在另一个函数的作用域内,并且引用了外层函数的变量,则该函数称为闭包

闭包时由函数及其相关的引用环境组合而成的实体

一旦在内层函数重新定义了相同名字的变量,则变量成为局部变量

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-16 18:47:09  更:2021-11-16 18:49:16 
 
开发: 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年12日历 -2024/12/31 6:22:42-

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