7

it2022-05-05  152

文章目录

一、元祖扩展: ()有两层含义 二、操作元祖1. 访问元祖2. 删除元祖重点内容:和Python的del函数功能一样3.元祖的截取4.多维元祖(大于等于2个()()的定义) 三、元祖函数len()max()&min()面试题型1 四、字典语法结构 字典名={key1:value1,key2:value2} - - - 键值对get方法 字典函数1. len(dict)2. str()3. type(dict)4.formkeys(dict)5. key in dict6. dict.keys()key 和 index的区别面试题型2优化sql- - -面试必问 like有几种方法?like的缺点

一、元祖

元祖是一个不可变的序列它的操作方式基本上和列表是一致的在操作元祖时,把元祖当成一个不可变的列表就OK一般当我们希望数据不改时,我们就采用元祖 my_tuplel = () #只要在一个变量/常量 = ()就是元祖的写法 print('元祖的类型',type(my_tuplel))

如何给元祖赋值?

my_tuplel = ('邱强强','ABC','123','wnag三')

如何给元祖开辟内存大小?

my_tuple2 = (10,20) #如果()有大于等于2个以上的int,表示的不是内存,内存只能写一个int值 my_tuple = (120) #n内存大小为120

获取元祖的下标去拿值,或者修改值等操作 - - - 元祖不能重新赋值 - - -重点

#my_tuep4[1] = '李四 ' my_tuple5 = 12,13,1456789,'邱强强' #此邪法也是元祖的写法但是不建议使用 my_tuple6 = ('邱强强','李四','张涛','李涛')

扩展: ()有两层含义

()表示的是一个函数()表示一个可以带参数/不带参数的方法 思考?假设函数没有(),效率怎么样? 结果: 在企业工作里面使用()函数式元祖赋值,不建议省略(),影响数据的性能问题

二、操作元祖

1. 访问元祖

2. 删除元祖

my_tuple6 = ('邱强强','李四','张涛','李涛') print('没有删除元祖之前的值为:',my_tuple6) del my_tuple6 #my_tuep6[2] print('删除元祖之后的值为:',my_tuple)

重点内容:和Python的del函数功能一样

思考?delete 和 drop是什么区别?

(1)delete只能操作表数据,但是不能操作表结构,也不能改变表结构等,只能删除数据 Python的del也是不能操作表结构,只能删除元祖\list列表中数据! (2)drop执行drop命令将表和表数据彻底删除,并且drop破坏表结构,会造成内存溢出,数据很难维护

总结:企业优化sql里面不能使用drop - - -作业:如何优化sql

3.元祖的截取

my_tuple7 = ('aaa','bbb','ccc') print('通过截取元祖1:2的值为:',my_tuple7[1:2])

#备注:元祖的截取是通过list列表的切片机制操作! #计算机语言的括号使用规则 ([]) {[],[]}

4.多维元祖(大于等于2个()()的定义)

#元祖的关键字是tuelp

my_tuple7 = (),() my_tuple8 = [],[] print('多维元祖:',type(my_tuple7)) print('多维数组:',type(my_tuple8)) my_tuple9 = [] print('多维列表:',type(my_tuple9))

利用一个[]可以创建一个list列表,但是定义2个或者多个[]表示的是多维元祖,列表是特殊的元祖,元祖里包含列表

my_tuple7 = (12)

备注:

**(12)**有两种解释

值为12Python解释器在内存里面执行的时候,会按照内存12操作数据

三、元祖函数

len()

my_tuple7 = ('a','b','c','d') num = len(my_tuple7) print('my_tuelp的长度',num)

max()&min()

my_tuple8 = (12,123,2,3,555,4587,-55) num1 = max(my_tuple8) num2 = max(my_tuple8,my_tuple2) print(‘max的最大值为’,num1) print(‘max的最大值为’,num2)

面试题型1

列表转化为元祖的特性 - - - 重点面试

列表是有序的,列表可以改变值,元祖有固定位置元祖的优先级大于列表,在工作里面,尽量使用元祖定义数据。列表存放数据没有元祖安全、数据没有元祖易维护,元祖查询数据的速度比列表快万物皆为对象- - - 对象的属性、方法就属于元素- - -元祖

四、字典

语法结构 字典名={key1:value1,key2:value2} - - - 键值对

my_dict = {1001:'邱强强',1002:'连晨烨',1003:'乔鑫'}

字典的核心特性:

字典使用{} - - -为什么/json{} {}表示键值对的写法,此写法传输数据的速度极快!字典的关键字dict dictionary字典通过键取值 ,键不可以重复,值可以重复 - - - Map一样 面试必问(Map list set)字典的键和数据库的ID主键原理一样

#字典的键是任意的不可改变对象(int、str、bool、tuple…),但是一般我们都会使用str

#Map<Inteager,String> map = new Map<Inteager,String>

#备注:Python为什么key也使用str 呢?因为服务器永远是字符串,- - -胶水语言

d1={'name':'Tom','age':18,'sex':'男' } d2={'name':'Bob', 'age':19, 'sex':'男' }#代码具有可读性 print('通过student2的键取值',d2['name']) print('通过student2的键取多个值',d2['name'],d2['age'],d2['sex'])

##如果使用了字典中不存在的键,会报错

my_tuple10 =['12','123',1234] my_tuple11 =(12,12) #my_tuple12 =my_tuple10 + my_tuple11 #print('my_tuple12是通过列表和元祖拼接结果:',my_tuple12) my_tuple18 = {(1,2),(3,5)} print('my_tuple18是通过列表和元组拼接的结果:',type(my_tuple18)) d2 = {'name':'qqq', 'age':18, 'gender':'男', 'name2':'sasdada' }#代码具有可读性 print('len的个数',len(d2))

get方法

print('get方法的作用为:',d2.get('name'))#有值 print('get方法的作用为:',d2.get('name1'))#无值 ----get方法的作用:None----企业大量使用 print(d2.get)

总结:

在key -value 里面。企业通过Key获取值,不建议使用index获取值。键定义为str类型键获取值的原理是什么? -----Mapping映射关系

扩展:映射的作用是什么?为什么企业框架 ssm、ssh都会采用映射?

通过映射可以减少开发代码量映射可以很好的将项目的业务进行 d3 = {'name':'qqq', 'age':18, 'gender':'男', 'name2':'asdadsa' }#代码具有可读性 d3['name2'] = '邱强强'#1.如果有相同的Key,则会覆盖之前的Key d3['name3'] = '是爸爸' print('d3值为:',d3) print('d3值为3:',d3)#2.如果之前的数据没有Key,则通过Key新增加一条数据 result = d3.setdefault('birthday',1998) print('result的结果是',result) print('result之后的d3:',d3) d4 = {'a':1,'b':2,'c':3} d5 = {'d':4,'e':5,'f':6,'a':7} d4.update(d5) print(d4) print(d5)

CRUD list\元set集合 - - - 切片操作 - - - 遍历结果集- - -3大循环

定义一个字典

字典函数

1. len(dict)

person1= {'1001':'邱强强','name':'赵老师','age':12,'birthday':100,'set':'男'} person2= {'1001邱强强','name赵老师','agebirthday'} print('person1的字典值为:',type(person1)) print('person1的返回次数为:',len(person1)) print('person1的返回次数为:',len(person2))

2. str()

person3 = {'name':'Tom','age':18,'sex':'男',18:19} result2 = str(person3) print('此时person3的类型是:',type(person3)) print('result2的结果是:',result2)

思考?如何获取person3的值 get key index 的 切片

通过str可以将{值} [值]一次性输出,并且不需要类型转换str不仅仅是一个字符串

3. type(dict)

4.formkeys(dict)

seq = ('name','age','sex') result3 = dict.fromkeys(seq)#formkeys(seq) - - - seq 表示的一个对象或者一个参数都可以解释 print('result3的值为:',result3)#foemkeys(seq) - - -表示的是将字典、元祖里面的值作为键输出 seq2 = {'name':'Tom','age':18,'sex':'男'} result4 = dict.fromkeys(seq2)#此方法就是对key的一个扩展,为什么? formkeys可以处理海量数据 print('result4的值为:',result4)

5. key in dict

dict1 = {'name':['Tom','Bob','Jhon'],'age':18,'sex':'男',18:19} name = ('name','age','sex') if name in dict1: print('name在字典里') else: print('name不存在') # print('name的类型',type(name))

#备注:元祖里面嵌套字典、列表,对于key-values来讲会发生key-values的值的不确定性!

6. dict.keys()

if 'age' in dict1: print('age在字典里') else: print('age不存在') print('keys的值为:',dict1.keys())

key 和 index的区别

keys的底层实现原理 - - -可以一次性查询去所有键,为什么?

D.keys() -> a set-like object providing a view on D’s keys"" keys底层其实是一个like函数的查询方法!但是like的查询效率太低 like不可以满足查询海量数据的操作

面试题型2

优化sql- - -面试必问 like有几种方法?like的缺点

like查询数据会产生缓存!- - - jd 淘宝 聚美优品 - - -查询数据(solr)全文检索

like在操作数据的时候会将数据切片!数据可能不是很完整!- - -不再使用!

select name from emp like name =’% 王’ select name from emp like name =‘强%’ select name from emp like name =’%强’


最新回复(0)