不知不觉学到第四天了,要尽管完成,进度有些被落下了
早上07:44达到实验室,喝了豆浆吃了面包背了单词开始学习
----08:19-----
1. 获取列表的多个元素-切片操作
print(对象名字[:8:2]),start位置没写就是表示从0开始
程序如图:
lst=[10,20,30,40,50,60,70,80,90] print(lst[:8:])
我们再试一试,stop这个位置不写,会是什么情况
lst=[10,20,30,40,50,60,70,80,90] print(lst[1::2])
1.2逆推
我们再介绍一种步长为负数的情况,即为逆推情况
lst=[10,20,30,40,50,60,70,80,90] print(lst[::-1])
lst=[10,20,30,40,50,60,70,80,90] print(lst[8::-1])
其结果和此程序结果一样
从哪里开始,加上-1,就是往回推
lst=[10,20,30,40,50,60,70,80,90] print(lst[6:0:-2])
记住哈,左开右闭。取不到0的索引位置,往回推步长为2
总结来讲,strat不写从0开始,stop不写到最后,步长不写为1,步长为负数,就逆推,保持左开右闭原则
1.3列表元素的判断和遍历
判断存在与否,可以通过in 或者not in 来判断
程序如下:
lst=[10,20,30,'hello',50,60,70,80,90] print('h'in lst) print('hello'not in lst) print(10 in lst)
判断就是元素in 列表名 元素 not in 列表名
列表元素的遍历
可以使用 for 迭代变量 in 列表名
我们回顾一下 这个for... in.. 语句是可以循环的 例如:
for a in 'python': print(a)
一次把python给了变量a,然后a呢依次输出出来。
再比如:
lst=[10,20,'hello','python'] for a in lst: print(a)
1.4列表元素的增加操作
1.4.1 append():在列表的末尾增加一个元素
举个例子:
lst=[10,20,30,40,50] lst.append(90) print(lst)
append只能添加一个元素。如果是多个元素的话就变成。
程序如下:
lst=[10,20,30,40,50] lst2=['hello','world'] lst.append(lst2) print(lst)
但这样不好看,所以才有了如下的extend() id原来一样
1.4.2 extend():在列表的末尾至少添加一个元素
形式如下:对象.extend(元素)
lst=[10,20,30,40,50] lst2=['hello','world'] lst.extend(lst2) print(lst)
这样就好看了。id还是原来的
1.4.3 insert():在列表的任意位置添加一个元素
形式如下:对象名.insert(索引位置,元素)原来的索引位置往后移,
lst=[10,20,30,40,50] lst2=['hello','world'] lst.insert(2,"ok") print(lst)
1.4.4 切片:在列表的任意位置添加至少一个元素
其核心思想就是替换,
程序如下,我写了两个列表。
lst=[10,20,30,40,50] lst2=['hello','world'] lst[2:]=lst2 print(lst)
切片这个名字用得好,用得妙,形容得恰到好处。
以上这些添加操作不要忘记 形式为 对象名+.+以上操作
1.5 列表元素的删除操作:
1.5.1remove():一次删除一个元素,相同元素只删除第一个。
lst=[10,20,30,40,50,30] lst2=['hello','world'] lst.remove(30) print(lst)
你看,都有30,就删除的是第一个。还是形式:列表对象名+.remove(指定元素)
1.5.2 pop():删除一个指定元素索引位置上的元素,不指定索引删除列表最后一个元素
lst=[10,20,30,40,50,30] lst2=['hello','world'] lst.pop(2) print(lst) lst.pop() print(lst)
删除指定位置的索引,如果pop()则删除最后一个元素
1.5.3切片:一次至少删除一个元素
与增加不同的是,删除的是取代思想
lst=[10,20,30,40,50,30] lst2=['hello','world'] new_list=lst[1:4] print(new_list)
第二种切片方法是:令想要删除的元素以切片呈现等于空列表 即lst[start:stop]=[]
程序如下:
lst=[10,20,30,40,50,30] lst2=['hello','world'] lst[1:3]=[] print(lst)
一个是取其中内容,一个是保留原列表删除一段元素。
1.5.4clear():清空列表
形式如下:对象名.clear()
lst=[10,20,30,40,50,30] lst2=['hello','world'] lst.clear() print(lst)
1.5.5del:删除列表
第一种:
lst = [1, 2, 3, 4, 5]
del lst[2] # 删除索引为 2 的元素,即删除数字 3
print(lst) # 输出: [1, 2, 4, 5]
第二种:
lst = [1, 2, 3]
del lst # 删除整个列表变量
# print(lst) # 这将引发错误,因为 lst 已经被删除
1.6列表元素的修改操作
1.6.1 一次修改一个值,用对象名[索引位置]=要修改的内容
比如:
lst=[10,20,30,40,50,30] lst[2]='hello' print(lst)
1.6.2 第二种方式:切片操作
lst=[10,20,30,40,50,30] lst[1:3]=['hello','world',50,60] print(lst)
对象名[start:stop]=[内容]
1.7列表的排序操作:
1.7.1 从小到大:用sort() 语法结构为:对象名+.+sort()
例如:
lst=[10,20,30,40,50,30] lst.sort() print(lst)
若从大到小,即降序则只需要在sort(reverse=True)即可。若写上False就是升序排序
lst=[10,20,30,40,50,30] lst.sort(reverse=True) print(lst)
这个是False的:
不改变列表对象
1.7.2 使用内置函数sorted(),产生新的列表对象,为升序
lst=[10,20,30,40,50,30] new_list=sorted(lst) print(new_list)
若改为降序,则sorted(lst,reverse=True)
lst=[10,20,30,40,50,30] new_list=sorted(lst,reverse=True) print(new_list)
1.8列表生成式
对象名= [x*y for x in range(数字)
例如:
lst=[x for x in range(5)] print(lst)
生成一个相乘的呢?
lst=[x*x for x in range(5)] print(lst)
-----老师办了调课手续花了一个半小时----现在是14:28开始学习-------
2.字典:
列表是一个一个的,就像单身贵族。使用方括号[]
而字典是一对一对的,就像二人世界一般,使用花括号{}
:前后,前面叫做键,后面叫做值
例子:scores={'张三‘:100,’李四‘:98,’王五‘:45}
键值对的方式存储数据,字典是一个无序的序列。列表是有序的。
里面有很多key即键,是经过计算才去放入的值,必须是不可变序列。
不然总变,int和str是不可变序列,不可以进行增删减操作。
列表和字典是可变序列,可增删减
python是根据key查找value所在的位置
通过 hash(key)查找效率是快的
2.2字典的创建
2.2.1最常用的方式是花括号{}
例如scores={'张三’:100,‘李四’:98,‘王五’:45}
2.2.2使用内置函数dict()
dict( name = 'jack',age=20)
例子说明:
2.2.1 第一种常见的花括号{}
变量名 = {‘名字’:数值,’名字2‘:数值}
scores={'张三':88,'李四': 55,'王五':99} print(scores)
2.2.2第二种内置函数dict()
变量 = dict(对象=str,/对象2=数字)
scores={'张三':88,'李四': 55,'王五':99} print(scores) student = dict(name='jack',age = 20) print(student)
2.3字典元素的获取:
2.3.1 []:scores['张三‘] 这是对Values的获取
scores={'张三':50,'李四':80,'王五':90} print(scores) print(scores['张三'])
2.3.2 get(): scores.get('张三') 这是对Values的获取
scores={'张三':50,'李四':80,'王五':90} print(scores) print(scores['张三']) print(scores.get('王五'))
它们俩的区别不是很大,就是有错误的时候,scores['黄六’],返回keyError
而get.scores('黄六‘),返回None 再加get.scores('黄六‘,99) 返回的是None,99
例如:
直接显示数值和None 和keyError
2.4字典的常用操作
2.4.1 key的判断
in和not in
例如:’张三‘in scores , 'Marry‘not in scores
scores={'张三':50,'李四':80,'王五':90} print ('张三'in scores) print('王五' not in scores)
2.4.2删除
语法结构:del scores['张三’] 这里是方括号哈[]
scores={'张三':50,'李四':80,'王五':90} del scores['张三'] print(scores)
清空命令
scores.clear() 就清空了字典里的所有元素
scores={'张三':50,'李四':80,'王五':90} scores.clear() print(scores)
新增操作
语法结构:scores['陈六‘]=80 ,即变量['名字’]=math
scores={'张三':50,'李四':80,'王五':90} scores['JAKC']=80 print(scores)
2.5获取字典视图的三个方法:
2.5.1keys: 获取字典中所有的key (丈夫)
结构:对象名+.+keys 例如:scores.keys()
list(sc),就是把sc给他列表化了。
scores={'张三':50,'李四':80,'王五':90} sc=scores.keys() print(sc) print(list(sc))
类型为dict_keys
2.5.2values:获取字典中所有value (妻子)
scores={'张三':50,'李四':80,'王五':90} va=scores.values() print(va)
类型为:dict_values
列表化一下 list(va)
2.5.3items:获取字典中所有key,value对 (家庭)
语法结构:对象名+.+items(0
scores={'张三':50,'李四':80,'王五':90} it=scores.items() print(it) print(list(it))
下面的()为元组
2.6字典元素的遍历:
例如:for item in scores:
print(item)
这是获取的键即(key)
程序如下:
scores={'张三':50,'李四':80,'王五':90} for item in scores: print(item)
那么这是获取key的方法,values呢?
之前学到的scores[对象】,与scores.get(对象)
scores={'张三':50,'李四':80,'王五':90} for item in scores: print(item,scores[item],scores.get(item))
2.7字典特点:
1.都是key-values对,key不可重复,而values可重复。
2.元素都是无序的
3.key是不可变对象 即(str 和 int)
4.可动态伸缩
------有位研三的师哥明天走,所以晚上得一起吃饭。不知道啥时候回来,所以先发出去---
继续加油。