day8总结-列表,元祖,字典

列表(list)续

1.列表相关运算

数学运算:+,*

列表一+列表二:将两个列表中的元素合并(按先后顺序)产生一个新的列表(原列表不会发生变化)

列表*N:列表中的所有元素重复N次产生新的列表

比较运算

== ,!=

print([1,2] == [1,2])   #True
print([1,2] != [2,1])   #True

<,>,<=,>=

只支持相同位置上元素类型相同的两个列表进行比较


相关方法

len(列表),sum(列表),max(列表),min(列表)

list(数据):将指定数据转换为列表,只有序列可以转换:字符串,列表,字典,集合,元祖,range,迭代器,生成器等,不能是数字

转换的时候是将序列中的元素作为列表元素

print(list('abcd'))   #['a','b','c','d']
print(list(range(5))) #[0,1,2,3,4]
print(list(23))       #报错
print(list(str(123))) #['1','2','3']

列表.count(元素):计算列表中指定元素出现的次数

列表.extend(序列):将序列中的元素添加到列表末尾,返回值为None

a = [1,2,3]
a.extend(['a','b'])
print(a)   #[1,2,3,'a','b']
a.extend('45')
print(a)   #[1,2,3,'a','b',4,5]

列表.index(元素):获取指定元素在列表中的下标,如果有多个相同元素,只获取第一个,如果元素不存在会报错

列表.reverse():将列表中的元素倒序,不会产生新列表

内置函数:reversed(序列) --将序列中的元素倒序,产生一个新的迭代器,原序列不会改变

a = [1,2,3]
result = reversed(a)
print(list(result))    #[3,2,1]
b = reversed('abc')
print(list(b))       #['c','b','a']

列表.sort():对列表中的元素从小到大排序(列表中元素类型一致且支持比较运算符),不会产生新的列表

列表.sort(reverse=True):从大到小排列

列表.copy():产生一个新的列表,列表中的元素和原列表一样,相当于:列表[:]

a = [1,2,3]
b = a
c = a.copy()
d = a[:]
a.remove(1)
print(a)    #[2,3]
print(b)    #[2,3]
print(c)    #[1,2,3]
print(d)    #[1,2,3]

id(变量):查看变量中实质存放的内存地址

python中所有变量实际保存的是数据在内存中的地址


列表删除元素

问题1:通过元素删除时可能出现删除不干净的问题

如:

#删除列表中小于60的数
a = [12,30,66,79,44]
for i in a:
    if i < 60:
        a.remove(i)
print(a)      #[30,66,79]

解决方法:创建一个新的列表保存原始数据,从新的列表中取值 ,删除原来列表中的元素

a = [12,30,66,79,44]
for i in a[:]:             #切片产生新的列表,没有指定变量名保存,那么用完后就会在内存里释放
    if i < 60:
        a.remove(i)
print(a)    #[66,79]

问题2:通过下标删除满足要求的元素时,可能会出现下标越界的错误

a = [12,30,66,44,79]
for i in range(len(a)):            
    if a[i] < 60:
        del a[i]
print(a)    #报错:IndexError: list index out of range

解决方法:通过while循环控制下标,遇到删除操作,下标不变

a = [12,30,66,44,79]
index = 0
while index < len(a):
    if a[index] < 60:
        del a[index]
        continue
    index += 1
print(a)

元祖(tuple)

1.什么是元祖

元祖就是不可变的列表,作为序列不可变(不支持增删改)但是有序(支持下标操作)

语法:(元素1,元素2,...,元素n)

其中元素的要求和列表一样

2.查 --获取元素

tuple1 = (1,2,3)
print(tuple1[0],tuple1[-1])    #结果为对应下标元素值
print(tuple1[:])               #结果为元祖

3.数学运算,比较运算

同列表操作一样

in / not in ,len(),max(),min(),sum()操作结果同列表(list)

tuple(序列):将序列转换为元祖,序列要求同列表

4.元祖专有特点

a.只有一个元素的元祖

需要在这个元素的后面加逗号,否则类型是他本身的类型

a = ('a')
b = (2)
c = (2,)
print(type(a))   #str
print(type(b))   #int
print(type(c))   #tuple

b.元祖的值可以去掉小括号

直接用逗号隔开各个元素即可

a = 1,2,3
b = 1,      #一个时要加逗号,逗号才是决定是否为元祖的关键而非小括号
x,y,z = 2,3,4    #变量同时赋值的原理其实是元祖的运用

c.多个元素时

若变量个数和元祖中元素个数相同时,可以让变量依次取出元祖中的元素

a = (1,2)
x,y = a
print(x,y)    #1 2

d.*的运用

通过多个变量去获取元祖元素时,可以在某个变量前加*来将这个变量变成列表获取不带*的变量取剩下来的数据

带*的变量只能最多存在一个

a = (1,2,3,4,5,6,7)
x,*y,z = a
print(x,y,z)    #1 [2,3,4,5,6] 7

字典

1.什么是字典(dict)

字典是Python内置的一个容器型数据类型,可变(支持曾删改),无序(不支持下标操作)

语法:{键值对1,键值对2,...,键值对n} = {键1:值1,键2:值2,...,键n:值n}

键(key):不可变且唯一(可用数字,字符串,元祖等不可变数据类型,实际开发建议用字符串)

值(value):和列表元素要求一样

dict1 = {'a': 100,'b': 'a','c': [1,2,3]}
dict2 = {[1,2]:2}    #报错,list可变不能作为键值
dict3 = {'a': 100,'b': 'a','a':99}   #{'a': 99,'b': 'a'},有相同键时,只有最后的键值对保留(唯一性)

键值对必须是成对出现

2.什么时候用字典

如果同时保存的多个数据具有不同意义就使用字典

3.查 --获取字典的值

a.获取key对应的值

字典[key] :获取字典中指定key对应的值

a = {'a':100,'b':200,'c':300}
print(a['a'])    #100,若key不存在则报错

字典.get(key):获取字典中指定key对应的值,如果key不存在则返回None

None是Python中的关键字,表示数据为空或没有的意思

字典.get(key,默认值):获取字典中指定key对应的值,如果不存在,则返回指定默认值(不会对原字典产生修改)

b.遍历

直接遍历字典拿到的是key而不是value。

a = {'a':1,'b':2,'c':3}
for i in a:
    print(i,a[i])    

补充:

for i in a.values():

for i in a.keys():

for x,y in a.items():

字典不支持切片!

c.增/改

语法:

字典[key]=value --当key不存在时就增加键值对,存在就修改原key值为新value

字典.setdefault(key,value) --只能添加键值对,不能修改

d.删

语法:

del 字典[key] --删除字典中key对应的键值对,如果key不存在会报错

字典.pop(key) --从字典中取出key对应的值,结果是key对应的值,原字典中会删除key及其对应的值


4.相关运算

只支持比较运算

== ,!= :判断多个字典中是否所有键值对都相等(无关顺序)

in / not in :

key in 字典:判断字典中是否存在某个key对应的键值对

len(字典):键值对的个数

max(字典)/min(字典):取key的最大值/最小值

dict(序列):将序列转换成字典,序列中元素要求也是小序列,且小序列必须有且只有2个元素,这两个元素的第一个元素要为不可变数据类型。

字典转列表或元祖时,是将字典的key取出来作为列表或元祖的元素


5.相关方法

a.字典.clear()

清空字典

students.clear()

b.字典.copy()

复制字典的内容,产生一个新的字典

c.dict.fromkeys(序列,值)

创建一个新的字典,将序列中的元素作为新字典的key,指定的值作为每个key对应的值

d.字典1.update(字典2)

将字典2中的键值对添加到字典1中,相同键值会更新为字典2的键值对。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 今天的目的地是成都,专门起早~结果胎又没气了,打开一看昨天没有补好,说什么也没用,这一切都是天意!没想到绵阳还挺大...
    涅槃528阅读 204评论 0 0
  • 新组织原则:从管理到赋能 未来新组织需要怎样的原则 新的战略思考方式,如果没有组织的创新时不可能落地的。 工业时代...
    映月夜阅读 2,851评论 1 12
  • 上周有一天结束后,在后台收到一位听众小耳朵留言,她说她刚和谈了5年的男友分手了,男生劈腿喜欢了新的女生,虽然最后是...
    低语小邵阅读 633评论 3 5

友情链接更多精彩内容