菜鸟学python集训云_菜鸟学飞自学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 的缩进规则,语句符合条件会执行,不符合则不会执行,只需要把代码块都缩进了就好,不需要加 {}

2040591-20200714152433106-1345471819.png

elif 是 if 和 else 的缩写,使用格式为:

2040591-20200714153203400-2001873509.png

if 语句从上往下判断,当前面的语句判断为 True 的时候,执行语句之后,会自动忽略之后所有的 if 和 else 语句。

2040591-20200714153553718-1200809860.png

上面的程序输出的结果是:teenager,但是实际应该是 adult,这是由于 if 语句运行的特点造成的,所以在编程的时候需要避免这种情况的发生。

input

input():返回的数据类型是 str,所以在输入数据之后要经过转换,比如说输入的数,则要利用 int() 进行转换

循环

for...in 循环

依次把 list 和 tuple 中的元素迭代出来

2040591-20200715091819993-1029110420.png

for x in...循环就是把每个元素带入 x 变量,然后执行缩进块语句

若要计算很多数的相加,把他们手动输入不现实,所以利用函数 range(),可以生成一个整数序列,然后用 list() 函数转化为 list。

range(5):[0,1,2,3,4]

while 循环

条件满足,执行循环,不满足跳出循环

进入死循环,Ctrl+C 退出程序,或强制结束 Python 程序

dict 和 set

dict

dict 使用键-值(key-value)存储,具有极快的查找速度

2040591-20200715104500660-752826268.png

把数据放入 dict 中,除了初始化指定以外,还可以通过 key 放入

2040591-20200715104708701-802412351.png

一个 key 只能对应一个 value,重复赋值,之前的数据将会被替代

如果 key 不存在,dict 将会报错

避免 key 不存在的错误,有两种方法,一是通过 in 判断 key 是否存在:

2040591-20200715110136753-1269866197.png

二是通过 dict 提供的 get 方法,如果 key 不存在,返回 None,或者返回自己指定的 Value:

2040591-20200715110334529-310249508.png

注:返回 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 作为输入集合:

2040591-20200715112301495-93430088.png

注意,传入的参数[1, 2, 3]是一个 list,而显示的{1, 2, 3}只是告诉你这个 set 内部有 1,2,3 这 3 个元素,显示的顺序也不表示 set 是有序的。

重复元素在 set 中自动被过滤:

2040591-20200715151311141-738832357.png

通过 add(key) 方法可以添加元素到 set 中,可以重复添加,但是不会有效果:

2040591-20200715151426131-1435768689.png

通过 remove(key) 可以删除元素:

2040591-20200715151541040-1998455821.png

set 可以看成数学意义上无序和无重复元素的集合,因此,两个 set 可以做数学意义上的交集、并集等操作:

2040591-20200715152513827-1450295801.png

set 和 dict 的唯一区别在于没有存储对应的 value,但是,set 的原理和 dict 一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证 set 内部“不会有重复元素”。

不可变对象

str 是不可变对象,对 str 进行操作:

2040591-20200715155111953-1224740789.png

虽然对字符串的操作可以利用 replace() 方法,也确实出现了 'Abc' ,但变量 a 依旧没有改变

对代码进行如下修改:

2040591-20200715155302694-1812488139.png

2040591-20200715155322669-386314889.png

要牢记,a 是变量,'abc' 才是字符串对象!我们常说,对象 a 的内容是 'abc' ,但其实是指,a 本身是一个变量,它指向的对象的内容才是 'abc'。

调用 replace 方法实际上是创建了一个新的字符串 'Abc' 并返回,变量 a 仍指向原有的字符串 'abc',但变量 b 指向新的字符串 'Abc'

对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值