python基础中需要注意的点002

1. 序列封包和序列解包

1.序列封包:程序把多个值赋给一个变量时,python会自动封装成元组。
2.序列解包:程序允许序列(元组或列表等)直接赋值给多个变量,此时序列的多个元素会被依次赋值给每个变量(元素数与变量个数相等)。
看如下代码:
序列封包

vals = 10,20,30
print(vals)#(10,20,30)

结果如下:
在这里插入图片描述

序列解包

a_tuple = tuple(range(1,10,2))
a,b,c,d,e = a_tuple
print(a,b,c,d,e) #1 3 5 7 9

结果如下:
在这里插入图片描述

在序列解包时也可只解出部分变量,剩下的依然使用列表变量保存。Python允许在左边被赋值的变量之前添加“*”,该变量就代表一个列表,可保存多个集合元素。

First,second,*rest = range(10)
print(First)#0
print(second)#1
print(rest) #[2,3,4,5,6,7,8,9]

效果如下:
在这里插入图片描述

为了加深理解,同理可得以下代码:

First,*middle,last = range(10)
print(First)#0
print(middle) #[2,3,4,5,6,7,8,9]
print(last)#9

在这里插入图片描述

2.append()方法和extend()方法

append()方法追加元组、列表只是把其当成单个元素,若不希望将被追加的列表当成一个整体而只是追加列表中的元素,可使用列表的extend()方法。
接下来咱们看看具体用法:
1.将元组当成整体:

a_list = ['a',1,2]
a_list.append((3.1,5.6))
print(a_list) #['a',1,2,(3.1,5.6)]

效果:
在这里插入图片描述
2.将列表当成整体:

a_list = ['a',1,2]
a_list.append([3.1,5.6])
print(a_list) #['a',1,2,[3.1,5.6]]

效果:
在这里插入图片描述
3.列表的extend()方法

b_list = ['a',30]
b_list.extend((-2,3.1))
print(b_list) #['a',30,-2,3.1]
b_list.extend(['A','R'])
print(b_list) #['a',30,-2, 3.1,’A’,’R’]
b_list.extend(range(10))
print(b_list) #['a', 30, -2, 3.1, 'A', 'R', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

效果:
在这里插入图片描述

3.列表相关

1.希望在列表中增加元素,可用insert()方法:

c_list = [1,5,6,9]
c_list.insert(1,'Python进阶之路') #1是索引下标位
print(c_list)

在这里插入图片描述
2.删除del操作用索引还可以删除普通变量:

c_list = [1,5,6,9]
c_list.insert(1,'Python进阶之路') #[1,'Python进阶之路', 5, 6, 9]
del c_list[0]
print(c_list)

效果如下:
在这里插入图片描述
提到删除,稍微提一下remove()方法(并不建议使用,了解即可):

c_list = [1,5,6,9]
c_list.insert(1,'Python进阶之路')
print(c_list)
c_list.remove(1)
print(c_list)

程序结果:
在这里插入图片描述
该方法是按元素删除并且只删除第一次找到的元素,若找不到则会引发Value Error 错误,所以并不建议使用。
3.用slice语法对列表其中一部分赋值,即可为列表增加元素也能为列表删除元素。
若使用字符串赋值,python会自动把字符串当成序列处理,其中每一个字符都是元素。请看以下代码:

a_list = [1,2,3,4,5]
a_list[1:3] = 'hello'#索引位为1、2的元素即2和3会被替换
print(a_list)

效果如下:
在这里插入图片描述
4.reverse()方法可将列表中所有元素的顺序反转,而sort()方法默认升序排列,可传入key和reverse两个参数。来看以下代码:

a_list = [11,2,31,4,52]
a_list.sort() #默认升序排列
print(a_list)
a_list.sort(reverse=True)
print(a_list)
b_list = ['你好呀','心向阳光','便种下太阳慢慢生长','往事随风可好?']
b_list.sort(key=len,reverse=True)#key=len:按字符串长度比大小;reverse=True:反排序
print(b_list)

程序结果如下:
在这里插入图片描述

4.字典相关

1.元组不可变可作为字典的key,而列表可变不能作为字典的key,dict()函数创建字典可以传入多个列表或元组参数作为key-value对。
来看以下代码:

s = [('hello',888),('byebye',666)]
dict1 = dict(s)
print(dict1)
s1 = [['hello',888],['byebye',666]]
dict2 = dict(s1)
print(dict2)
dict3 = dict(a = 1.68,b = 999)#这种key不需要加引号
print(dict3)

程序结果如下:
在这里插入图片描述
2.字典中的get()方法是根据key来获取value,若不存在返回None,用方括号语法,若不存在会引发keyError错误。

dict1 = {'hello': 888, 'byebye': 666}
s1 = dict1.get('hello')
s2 = dict1.get('niubi')
print(s1) #888
print(s2) #None
print(dict1['byebye'])#使用方括号语法key存在 输出666
print(dict1['bli']) #使用方括号语法key不存在,程序报KeyError错误

程序运行结果如下:
在这里插入图片描述
3.update()方法更新字典,若存在则覆盖value,若不存在会自动添加键值对。items(),keys()和values()方法分别用于获取字典的所有key-vaue对、所有key、所有value。三个方法依次返回dict_item、dict_keys和dict_value对象,python不希望用户直接操作这几个方法,但可以通过list()函数把他们转换成列表。用法见以下代码:

dict1 = {'hello': 888, 'byebye': 666}
s1 = dict1.items()
print(type(s1)) #<class 'dict_items'> 返回一个dict_items对象
print(list(s1)) #[('hello', 888), ('byebye', 666)]
s2 = dict1.keys()
print(type(s2))
print(list(s2))#['hello', 'byebye']
s3 = dict1.values()
print(type(s3))
print(list(s3))#[888, 666]

运行结果:
在这里插入图片描述
4.popitem()方法用于随机弹出字典中的一个键值对,但其实此处的随机是假的,就像列表的pop()方法总是弹出列表的最后一个元素,popitem()方法也是弹出字典的最后一个键值对。由于字典存储键值对的顺序是不可知的,因此开发者感觉popitem()方法是“随机”弹出的,但实际上字典的popitem()方法总是弹出底层存储的最后一个键值对(实际上弹出的是一个元组,可用序列解包的方式接收key和value)。使用方法见以下代码:

dict1 = {'hello': 888, 'byebye': 666,'fine':1314}
print(dict1)
print(dict1.popitem())
print(dict1)

运行结果:
在这里插入图片描述
5.setdefault()方法用于根据key来获取相应的value值,额外功能:程序要获取的字典中的key不存在时,该方法会自动为其设置一个默认的value,再返回key对应的value值。

dict1 = {'b':8.5,'c':9,'a':6.6}
print(dict1.setdefault('d',10)) #10

6.fromkeys()方法使用给定的多个key创建字典,这些key对应的value默认都是None,也可以额外传入一个参数作为一个默认的value。

dict1 = dict.fromkeys(['a','b'])
print(dict1) #{'a':None,'b':None}
dict2 = dict.fromkeys((13,14))
print(dict2) #{'13':None,'14':None}
dict3 = dict.fromkeys((13,14),'ok')
print(dict3) #{13:'ok',14:'ok'}

7.字典格式化字符串:在字符串模板中按key指定变量,然后通过字典为字符串模板中的key设置值,用法如下:

ss ='书名是:%(name)s,价格是:%(price)010.f'
book = {'name':'为了你我愿意热爱整个世界','price':13.14}
print(ss%book)# 书名是:为了你我愿意热爱整个世界,价格是:13.14

结语

每一篇博客的结语我会写上一段激励的话,因为我知道,学习的情绪很重要,适当的给自己打打气很有必要。可能有时候我们会感觉代码很枯燥,不想坚持了,但亲爱的朋友,我想告诉你,你离成功只差一个坚持。前期积累的过程注定是一段沉默的时光,也许你感觉很累,也许你甚至已经犹豫着要不要放弃,但是我可以告诉你,每一个人心中都有一只华丽、睿智、高贵的凤凰,唯有经历淬火锤炼,才能涅槃重生。当我们踩过了众多的坑,经历了众多的艰难,我们会明白暗淡的时光会让我们逆势生长。积累到一定的程度你会发现,代码的世界真是一个神奇的世界,为了看看这个世界的风光,你会一直狂热的一路走下去。成功的路上并不拥挤,因为坚持的人不多。只有坚持了,我们才知道,这一路上有多少事情需要干,有多少东西需要学习。随着时间的推移,任何一条通往成功的道路上同行者会越来越少。把“胜者为王”改为“剩者为王”也许更能准确地表达成功与坚持的关系。生命需要一种激情,当这种激情能让别人感到你是不可阻挡的时候,就会为你的成功让路。所以,亲爱的朋友们,用你满腔的激情继续坚持吧。

发布了8 篇原创文章 · 获赞 6 · 访问量 1304

猜你喜欢

转载自blog.csdn.net/weixin_44327634/article/details/102771883
今日推荐