自由式学习
992人加入学习
(0人评价)
Python基础知识-pycharm版
价格 免费
承诺服务
该课程属于 1443-李同学-算法方向-计算机视觉-就业:是 请加入后再学习

函数操作全局可变变量,本质是传递堆中对象地址,一旦在函数中对可变变量修改,即便出了函数栈帧,全局变量也会改变

[展开全文]

ord():把字符串转换成对应的Unicode码

chr():把十进制数字转换成对应的字符

[展开全文]

import turtle
turtle.width(10)
turtle.color("blue")
turtle.circle(50)
turtle.color("black")
turtle.penup()
turtle.goto(120,0)
turtle.pendown()
turtle.circle(50)

turtle.penup()
turtle.goto(240,0)
turtle.pendown()
turtle.color("red")
turtle.circle(50)
turtle.color("yellow")
turtle.penup()
turtle.goto(60,-50)
turtle.pendown()
turtle.circle(50)
turtle.color("green")
turtle.penup()
turtle.goto(180,-50)
turtle.pendown()
turtle.circle(50)
 

[展开全文]

程序基本格式:

1、恰当空格,缩进

2、大小写

3、注释

     行注释#

     段注释'''

[展开全文]

同一运算符:用于比较两个对象的存储单元,实际比较的是对象的地址

is:判断两个标识符是不是引用同一个对象,常用于与None比较

is not:判断两个标识符是不是引用不同对象

is与==的区别:

is用于判断两个变量引用对象是否为同一个,即比较对象的地址

==用于判断两个变量引用的对象的值是否相等

 

整数缓存问题:

python仅仅对比较小的整数对象进行缓存([-5, 256]),这仅仅是在命令行中执行,而在Pycharm或者保存为文件执行,解释器做了一部分优化([-5, 任意正整数])

[展开全文]

常量:不变化的量,python不支持常量,即没有语法规则限制改变一个常量的值

[展开全文]

变量:存放在栈中,存储的是对象的地址

  1. 格式:变量名 = 表达式。
  2. 变量必须先赋值,才能使用

  1. del 变量名:删除变量
  2. 删除变量后,变量所指向的对象依然存在,会被垃圾回收机制回收

[展开全文]

对象的本质:一个内存块,拥有特定的值,支持特定类型的相关操作

[展开全文]

列表推导式,生成列表

[表达式 for item in 可迭代对象]

[表达式 for item in 可迭代对象 if 条件]

[(a,b,c) for a in 可迭代对象 for b in 可迭代 for c in 可迭代]

字典推导式,生成字典,多于与统计众数

dict={ key:表达式 key in 可迭代对象} 表达式为key的函数

str="avvjfkjkjadjla"

dict={key:str.count(c) for c in str}

集合推导式

b={x for x in 可迭代 if条件}

元组 生成器推导式

gn=(x for x in 可迭代) 只能用一次

print(tuple(gn))

[展开全文]

循环优化 time.time()

减少最内层循环的计算,尽量往外层放

连接字符串使用str.join(""),不生成新字符串

列表删减放在尾部,不用大量copy数据

 

[展开全文]

集合是无序可变,元素不能重复,底层是字典,所有元素是字典的键

a={key1,key2,key3}

a.add(newkey)

a.remove(key)

a.clear()

a=set(list)

a=set(tuple)

a|b 或者a.union(b) 并集

a&b a与b的交集

a-b 差集

[展开全文]

字典查找的底层逻辑

key1值先转换散列码,先取散列码右侧数组位数的值,取出与其等值的引索对应的key2, 对key1和key2进行哈希值验算,一样则取出来value,不一样则再取key1散列值右侧数组位,得到新引索,继续比较

键必须可散列,数字,字符串,元组

自定义键必须满足

支持hash()函数

支持_eq_()方法检测相等

a==b为真,则 hash(a)==hash(b)为真

[展开全文]

字典底层原理

散列表:稀疏数组,数组的基本单元bucket

bucket包含key和value

key通过计算哈希值(散列码),根据数组位数从右向左取2进制值,并于散列表的索引对比,有空位就放入,无空位哈希值继续左移一个数组位数,继续配位。如果历遍仍无配位则数组扩容。

数组满60%,进行扩容

[展开全文]

表格数据

r1={key1:value1,key2:value2,key3:value3}字典定义单行

r2={key1:value1,key2:value2,key3:value3}

tb=[r1,r2],列表组件表格

访问值

tb[0].get("key")

[展开全文]

序列解包

a,b,c=dict       a,b,c接受键

a,b,c=dict.values()  abc接受值

a,b,c=dict.items() abc接受键值对

[展开全文]

字典修改

dict[键]=值, 添加新元素,key重复则覆盖

dict1.update(dict2),以dict2的内容加入dict1,键重复则覆盖。

del(dict[键1]) 删除键1和值

dict.pop("键1"),删除键1值对,并返回值

dict.clear()清空字典

dict.popitem()随机移除一个键值对

 

[展开全文]

字典访问

dict.get("键",“不存在时返回的值”)

dict.items() 显示所有键值对

dict.keys() 显示所有键

dict.values() 显示su

len(dict) 返回键值对数量

"键" in dict判断键是否在字典里

[展开全文]

字典:键值对的无序可变序列

键为不可变数据,不可重复

a={键1:值1,键2:值2}

b=dict(键1=值1,键2=值2)

c=dict(  [  (键1,值1),(键2,值2)  ]  )

d=dict(zip(list1,list2))

e=dict.fromkeys([key1,key2 ,key3])

[展开全文]