2981-孙同学-人工智能学科-计算机视觉方向-就业:否 扫二维码继续学习 二维码时效为半小时

(0评价)
价格: 免费

集合

集合无序可变,元素不能重复。实际上,集合底层是字典实现,只有字典的‘键对象’。因此是不能重复且唯一的。

集合创建和删除

1. 使用{}创建,并使用add()方法添加元素

a={3,5,7}

a.add(9)

print(a)

2. 使用set(),将元组、列表等可迭代对象转成集合

3.remove()删除指定元素,clear()清空整个集合

集合相关操作

a|b #并集

a.union(b)

a&b #交集

a.intersection(b)

a-b #差集

a.difference(b)

[展开全文]

根据键查找‘键值对’的底层过程

a.get('name')

第一步,我们计算'name'对象的散列值:

bin(hash('name'))

和存储的底层流程算法一致。取散列值不同位置的数字,然后查看偏移量对应的bucket是否为空。如果为空,返回None。如果不为空,则将这个bucket的键对象计算对应散列值,和我们的散列值进行比较。相等则返回对应'值对象'。不相等,则重新计算偏移量。依次取完后仍然没找到,则返回None。

[展开全文]

字典核心底层原理(重要)

字典对象的核心是散列表。散列表是一个稀疏数组(总有空白元素的数组)。数组的每个单元叫做bucket。每个bucket有两部分:一个是键对象的引用,一个是值对象的引用。通过偏移量来读取指定bucket。

将一个键值对放进字典的底层过程

第一步计算key的散列值。Python中可以通过hash()来计算。

拿出计算出的散列值的最后面3位数‘101’作为偏移量,十进制是数字5。我们查看偏移量5对应的bucket是否为空。则把键值对放进去。如果不为空,则依次取后面3位作为偏移量,直到找到为空的bucket将键值对放进去。

[展开全文]

复杂表格数据存储

表格数据使用字典和列表存储,并实现访问。

r1={'name':'ben','age':18,'city':'BJ'}

r2={'name':'joe','age':19,'city':'SH'}

r3={'name':'cici','age':20,'city':'SZ'}

tb=[r1,r2,r3]

#获得第二行人的城市

print(tb[1].get('city'))

#打印所有的薪资

for i in range(len(tb)):

    print(tb[i].get('city'))

#打印表的所有数据

for i in range(len(tb)):

print(tb[i].get('name'),tb[i].get('age'),tb[i].get('city'))

[展开全文]

序列解包

序列解包可以用于元祖、列表、字典,对多个变量赋值。

x,y,z=(20,30,10)

(a,b,c)=(20,30,10)

[a,b,c]=(20,30,10)

字典序列解包

s={'name':'ben','age':18,'sex':'man'}

a,b,c=s #接收键

e,d,f=s.values() #接收值

h,i,j=s.items() #接收键值对

[展开全文]

字典元素添加、修改、删除

1.给字典新增'键值对'。如果'键'已经存在,则覆盖旧得键。如果键不存在,则新增'键值对'。

a={'name':'lynn','age':18,'job':'planner'}

a['add']='南京路1号'

a['age']=16

print(a)

2.使用update()将新字典中所有键值对全部添加到旧字典对象上。如果key有重复,直接覆盖。

a={'name':'lynn','age':18,'job':'planner'}

b={'name':'ben','age':120,'sex':'man'}

a.update(b)

print(a)

3.字典中元素的删除,可以用del()或者clear()全删;pop()删除指定键值对,并返回对应的'值对象'。

b=a.pop('age')

4.popitem()随机删除和返回该键值对

a.popitem()

[展开全文]

字典元素的访问

为了测试各种访问方法,我们这里设定一个字典对象:

a={'name':'lynn','age':18,'job':'planner'}

1. 通过[键]获得'值'。若键不存在,则抛出异常

a={'name':'lynn','age':18,'job':'planner'}

print(a['name'])

2.通过get()方法获得值,推荐使用。优点:指定键不存在,返回None;也可以设定指定键不存在时默认返回的对象。推荐使用get()获取'值对象'。

a={'name':'lynn','age':18,'job':'planner'}

a.get('name')

print(a.get('sex','女'))

3.列出所有键值对

a.items()

4.列出所有的键,列出所有的值

a.keys()

a.values()

5.len()键值对的个数

6.检测一个'键'是否在字典中

print('name' in a)

[展开全文]

列表切片操作

典型操作

切片不在范围内也不会报错。起始偏移量小于0则会被当成0,终止偏移量大于长度-1则会被当成长度-1

列表遍历

for obj in listObj:

    print(obj)

[展开全文]

生成器推导式创建元组

生成器推导式用的小括号。生成器生成生成器对象,再转化成元组。

s=(x*2 for x in range(5))

print(tuple(s))  #只能访问一次元素,第二次就为空了。需要再生成一次。

print(s._next_()) #指针下移

元组可以作为字典的键,列表不行。

[展开全文]

元组的元素访问和计数

1. 元组的元素不能修改

2.访问和列表一样,返回的仍然是元组

3.如果要对元组排序,只能用sorted()生成新的列表对象

Zip

将多个列表对应位置的元素组合成为元组,并返回这个zip对象。

 

[展开全文]

元组tuple

可以修改列表中的元素,元组属于不可变序列。

元组支持如下操作:

1. 索引访问

2. 切片操作

3. 连接操作

4. 成员关系操作

5. 比较运算操作

6. 计数

元组的创建

1.通过()

a =(10,20,30) #小括号可以省略

a=(20,) #单元素加逗号

2.通过tuple()

b=tuple(可迭代的对象)

元组对象删除 del b

[展开全文]

多维列表

二维列表

一维列表帮助存储一维、线性的数据。

二维列表帮助存储二维、表格的数据。

a=[

['高一',18,3000,'北京']

['高二',17,2000,'上海']

['高三',19,1000,'深圳']

    ]

print(a[0][3])

嵌套循环打印二维列表的所有数据

a=[

['高一',18,3000,'北京']

['高二',17,2000,'上海']

['高三',19,1000,'深圳']

    ]

for m in range(3):

    for n in range(4):

        print(a[m][n],end='\t')

    print()#打印完一行,换行

[展开全文]

列表排序

修改原列表,不生成新列表的排序

a=[40,10,20,30]

a.sort()   #默认升序

a.sort(reverse=True)   #降序排列

import random

random.shuffle(a) #随机打乱顺序

建新列表的排序

内置函数sorted(),这个方法返回新列表,不对原列表修改

a=[40,10,20,30]

a=sorted()

c=sorted(a,reverse=True)

reversed()返回迭代器

内置函数reversed()也支持逆序排列,不对原列表做修改。

max和min

返回列表中的最大最小值

sum

对数值型列表所有列表求和,非数值型报错

[展开全文]

列表元素访问和计数

通过索引直接访问元素

索引区间[0,列表长度-1],超过范围则报错

index()获得指定元素在列表中首次出现的索引

index(value,[start,[end]])

a=[10,20,30,40,50]

a.index(50,3)

count()获得指定元素在列表中出现的次数

a=[10,20,30,20,50]

a.count(20)

len()返回列表长度

列表中元素的个数

成员资格判断

in关键字判断

a=[10,20,30,40,50]

20 in a

[展开全文]

列表元素的删除

del删除

删除列表指定位置的元素

a=[10,20,30]

del a[1]

print(a)

pop()方法

pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个位置

a=[10,20,30]

b=a.pop()

print(b)

remove()方法

删除首次出现的指定元素,不存在则异常

[展开全文]

列表的创建

基本语法[]创建

a=[]

list()创建

list可以将任何可迭代的数据转变成列表

a=list('zifuchuan')

range()创建整数参数

range([start,]end[,step])

start可选,表示起始数字,默认0

end必选,表示结尾数字

step可选,表示步长,默认1

推导式生成列表

a=[x*2 for x in range(5)] #循环创建多个元素

a=[x*2 for x in range(100) if x%9==0] #通过if过滤元素

[展开全文]

1.比较运算符可以连用

3<a<10

2.位操作

&=按位与

|=按位或

^=按位异

<<左移1位相当于乘以2;左移两位相当于乘以4

>>右移1位相当于除以2;右移两位相当于除以4

运算符优先级问题

复杂表达式一定要使用小括号组织

1.先乘除,后加减

2.位运算和算术运算>比较运算符>赋值运算符

 

 

[展开全文]

可变字符串

在pyhton中,字符串不可变。可以使用io.StringIO对象或array模块原地修改字符串。

import io

s='hello,sxt'

sio=io.StringIO(s)

print(sio.getvalue())

sio.seek(7)

sio.write('g')

print(sio.getvalue())

[展开全文]

字符串常用方法汇总

常用查找方法

len(a) 计算字符串长度

a.startswith('字符串') 是不是以指定字符串开头

a.endswith('字符串') 是不是以指定字符串结尾

a.find('字符串') 第一次出现指定字符串的位置

a.rfind('字符串') 最后一次出现指定字符串的位置

a.count('字符串') 指定字符串出现了几次

a.isalnum() 判断所有字符串全是字母或数字

a.isalpha() 判断所有字符串全是字母(含汉字)

去除首尾信息

strip() 去除首尾指定信息

lstrip() 去除首指定信息

rstrip() 去除尾指定信息

大小写转换

a.capitalize() 产生新的字符串,首字母大写

a.title()  产生新的字符串,每个单词都首字母大写

a.upper() 产生新的字符串,所有字符全转成大写

a.lower() 产生新的字符串,所有字符全转成小写

a.swapcase() 产生新的字符串,所有字母大小写转换

格式排版

a.center(10,'*') 居中

a.ljust(10,'*') 左对齐

a.rjust(10,'*') 右对齐

[展开全文]