菜鸟学飞自学Python(一)
(个人学习抄录,便于回顾)
list 和 tuple
list:列表,一种数据类型,list 是一种有序的集合,可以随时添加和删除其中的元素。
len():求列表元素个数
例:number['01' , '02' , '06']
访问:number[0],number[1],number[2](正向)
number[-1],number[-2],number[-3] (倒序)
添加:number.append('09') —— 添加在最后
插入:number.append(2,'04') —— 插入索引号为 2 的位置,后面元素后移
删除:number.pop() —— 删除末尾元素
number.pop(1) —— 删除索引号为 1 的元素
替换:number[1]='03' —— 替换索引号为 1 的元素
list 中元素的数据类型可以不同,如 K = ['Tim', 123, False]
list 中可以包含另一个 list ,如 s = ['abc', 'xyz', ['O','Q'], 'st']
注:len(s) = 4
r = ['O' , 'Q']
s = ['abc' , 'xyz' , r , 'st']
取 'O' 可以用 r[0] 或者 s[2][0]
故,s 可以看成是二维数组。
如果 list 中一个元素都没有,则为空,长度为 0。
tuple:元组,初始化后不能修改。
number = ('01' , '02' , '03')
取元素:number[0],number[-1]
tuple 不能改变,所以代码更加的安全,尽量使用 tuple 代替 list
当定义 tuple 时,元素也必须确定下来
如:t = (1,2)
定义空的:t = ()
定义只含一个元素的,会产生歧义:t = (3),会默认为 t = 3,括号被解释为算术运算的括号,为了避免歧义,定义时会加一个逗号区分,t = (3,)
可变的 tuple,如:
t = ('a' , 'b' , ['A' , 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'
t = ('a' , 'b' , ['X' , 'Y'])
实际上 tuple 的指向一直没有改变,知识改变了 list 的指向,所以 tuple 中的元素内容发生改变。
条件判断
if 和 else 语句后面要加:
根据 Python 的缩进规则,语句符合条件会执行,不符合则不会执行,只需要把代码块都缩进了就好,不需要加 {}
elif 是 if 和 else 的缩写,使用格式为:
if 语句从上往下判断,当前面的语句判断为 True 的时候,执行语句之后,会自动忽略之后所有的 if 和 else 语句。
上面的程序输出的结果是:teenager,但是实际应该是 adult,这是由于 if 语句运行的特点造成的,所以在编程的时候需要避免这种情况的发生。
input
input():返回的数据类型是 str,所以在输入数据之后要经过转换,比如说输入的数,则要利用 int() 进行转换
循环
for...in 循环
依次把 list 和 tuple 中的元素迭代出来
for x in...循环就是把每个元素带入 x 变量,然后执行缩进块语句
若要计算很多数的相加,把他们手动输入不现实,所以利用函数 range(),可以生成一个整数序列,然后用 list() 函数转化为 list。
range(5):[0,1,2,3,4]
while 循环
条件满足,执行循环,不满足跳出循环
进入死循环,Ctrl+C 退出程序,或强制结束 Python 程序
dict 和 set
dict
dict 使用键-值(key-value)存储,具有极快的查找速度
把数据放入 dict 中,除了初始化指定以外,还可以通过 key 放入
一个 key 只能对应一个 value,重复赋值,之前的数据将会被替代
如果 key 不存在,dict 将会报错
避免 key 不存在的错误,有两种方法,一是通过 in 判断 key 是否存在:
二是通过 dict 提供的 get 方法,如果 key 不存在,返回 None,或者返回自己指定的 Value:
注:返回 None 时,Python 的交互式命令行不显示结果
删除:pop(key)
注:dict 内部存放的顺序和 key 放入的顺序是没有关系的。
dict 的特点:
1、查找和插入的速度极快,不会随着 key 的增加而增加;
2、需要占用大量的内存,内存浪费多
list 特点相反:
1、查找和插入的时间随着元素的增加而增加;
2、占用空间小,浪费内存很少
dict 是用空间换取时间的一种方法。
dict 的 key 必须是不可变对象
原因:dict 通过 key 来计算 value 的存储位置,如果每次计算相同的 key 得出的结果不同,那 dict 内部就完全混乱了。通过 key 计算位置的算法称为哈希算法(Hash)
要保证 hash 的正确性,作为 key 的对象就不能变。在 Python 中,字符串,整数都是不可变的,可以作为 key,但是 list 是可变的,不能作为 key
set
set:与 dict 类似,也是一组 key 的集合,但不存储 value。由于 key 不能重复,所以,在 set 中,没有重复的 key。
要创建一个 set,需要提供一个 list 作为输入集合: