第二课:Python三大常用储存变量:列表、元组、字典

        今天来学习一下python中最常用的三大储存变量,也可以叫做储存变量。今天是星期天,按道理应当是录制视频,但反复思考,学习中断一天影响挺大的,因此,学习一段简短的三个储存变量,发个简单的学习内容。

        开篇前先介绍一个拓展:autopep8。在安装拓展里面安装此拓展时候,便可一键格式化代码,对于pycharm用习惯了的我来说,没有快捷格式化是真的难受。每次运行前我都会保留格式化代码一次。pycharm的格式化快捷键为Ctrl+Alt+L,VS Code安装该插件后,快捷键为:Shift+Alt+F,慢慢用,你会喜欢这个功能的。

        三大储存变量中,最常用的便为字典,其储存数据方便,且可变性是十分重要的,基本上在pyton中属于通用,因此,其详细用法应当是必须掌握的,编程语言都是一个逻辑,掌握一种就掌握了全部。其表示方法为:  list_list = []  。

        元组是不可改变的,任何属性均不可改变,包括其元素,位置,数量,只能整个调用,往往对一些重要数据的储存采用元组,以防数据被更改。表示方式为:  tuple_tuple = ()   。

        字典往往体现在出粗数据库,字典是个和好的储存方式,它的索引可分开可单独索引的变通性,针对同组数据不同成员通常采用字典收录。表示方法为:   dirc_dirc = {}   。

 一、列表[list]

 1、列表的索引

        列表的索引往往采用的方式为   List[]   ,其表达的含义为:索引列表的元素,此索引在应用时,往往涉及位置参数的更新与参数的更新传递,在这里,减少最基础的按顺序索引。正序的时候是从0开始数,与倒叙-1开始数。

        然而,在初学阶段,很多同学会把前引号与后引号也算为位置。我们可以知道,对于字符串,是需要引号引用的,如此方可将其与内置函数区分开,然而,数字是没有引号的。

        因此,对于python来说,输出的结果是不带引号的,所以对于前引号、后引号的字符串,在索引时,会忽略引号进入字符串内部索引。且可多次索引直到内部元素不可再分割。其方法为索引元素后继续添加中括号,其具体实例如下:

List_1=['aaa','bbb',333]
# 在这里,通常采用元素位置索引得到列表元素
print(List_1[1])
print(List_1[-1])

        其输出的结果为:bbb   333   。它是不带任何引号的,那么,我们用下面的代码,第二次引用其内部结构,输出的是否为:   b   和   3   呢?

print(List_1[1][1])
print(List_1[-1][1])

        其输出的结果为:

b
Traceback (most recent call last):
  File "d:\PythonLearn\PythonWork\3、List.py", line 6, in <module>
    print(List_1[-1][1])
          ~~~~~~~~~~^^^
TypeError: 'int' object is not subscriptable

        噢,出错了?怎么会这样呢?不应该输出为3吗?索引[1]就表示从左到右第二位,报错原因出在哪里呢?

        其实,很多人都犯了同类替换原理的错误了,对于长得很像的类型,就把他们当作了同一类型,但其实,我们只需要看一下报错结果就可以了。

        我们看到,他说的第6行啊,也就是代码最后一行中的“整数”类型不可再被下标的,也就是第二次不能再继续索引了。也就是说,我们看到的333其实是一个整数,整数的索引方法当然不能通过元素的位置定义了。

        在这里提一下啊,通常大家所采用的最简单的得到整数每个位置的元素采用的方法为四则运算,算出其每个位置的具体数字就可。当然,其实也有更简单高效的方法,后面某些项目可能用得到。

 2、修改、添加、删除列表元素

        我们了解,对变量进行点式改变,其不会更变原始变量的值。但这在列表中并不适用,列表中进行函数处理,会改变列表中对应元素,其主要操作为修改、添加和删除。

  (1)列表元素添加

        列表添加元素有两种方法,一种是append()函数,另一种是insert()函数,两种函数的区别主要在于append在于末尾追加,这对每一次的循环与后续加入不打乱顺序是极其友好的,insert可以规定插入位置,在使用中应当灵活采用。

# 列表添加元素
List_add = ['1','小明','迟到了']
# #方法一:采用append在列表后面添加元素
List_add.append('x')
print(List_add)
# #方法二:用insert插入到指定位置
List_add.insert(1,'x')
print(List_add)

        其插入输出的结果为:

['1', '小明', '迟到了', 'x']
['1', 'x', '小明', '迟到了', 'x']
  (2)修改列表元素

        此方案是最简单的,当我们索引出一个值,可以对其进行变量赋值,从而改变原数列。

# 列表修改元素
List_add = ['1','小明','迟到了']
List_add[2]='dog'
print(List_add)
# 其输出的结果为:['1', '小明', 'dog']
  (3)删除列表元素

        在python中有四种删除元素的方法:

                a、语句删除,删除指定位置;

                b、pop函数不带参删除,是将末尾的最后一个值单独分离出来,并作为一个可传递的元素,此时可以用一个变量接受该元素,产生新的元素,原列表中该元素被删除。

                c、pop函数带参删除,pop口号中指定删除某个位置的元素,此方案只可指定位置,不可指定值。

                d、remove函数,此函数便可删除指定值,但是不可删除指定位置。

                四种删除方式各有优劣。

# 列表删除元素
List_del = ['1', '小明', '迟到了']
# #del语句删除
del List_del[1]
print(List_del)
List_del = ['1', '小明', '迟到了']
# #pop语句删除1
List_del_2 = List_del.pop()
print(List_del_2)
print(List_del)
# #pop语句删除2
List_del = ['1', '小明', '迟到了']
List_del_3 = List_del.pop(0)
print(List_del)
# #remove删除
List_del = ['1', '小明', '迟到了']
List_del.remove('小明')
print(List_del)

        四种方式输出的结果分别为:

['1', '迟到了']

迟到了
['1', '小明']

['小明', '迟到了']

['1', '迟到了']

        其中,pop的不传参与remove本人使用较为普遍,毕竟要移除并记录数值这便是不含库的最佳方案。

(4)对列表的元素顺序管理

        此部分是仅针对列表而言,对元组无法采用,对字典排序输出不同。主要有四个函数:sort()为永久顺序排序,改变原始数列;sorted()为临时排序,需要使用变量来承接,否则一次使用后将被遗忘,不更改原始数列;reverse()对当前的顺序进行永久反转;len()为确定列表元素的个数,此函数一般在遍历时通用,特别是未知元素个数,却需要遍历之时。

# 对列表的管理
# #临时排序
List_manage = ['tianjin', 'shanghai', 'beijing', 'chengdu', 'xinggang']
List_tempor = sorted(List_manage)
print(List_manage)
# #永久改变顺序
List_manage.sort()
print(List_manage)
# #次序颠倒
List_manage = ['tianjin', 'shanghai', 'beijing', 'chengdu', 'xinggang']
List_manage.sort(reverse = True)
print(List_manage)
List_manage.reverse()
print(List_manage)

        由图可看出,对于sort与reverse是可以组合使用的,倒数第四行代码的意思是将以上城市按照首字母排序,并添加反转的最后结果刷新保存到该列表。倒数第二行,是将已经排反转好的列表再次反转,运用十分灵活。

其输出的结果为:

['tianjin', 'shanghai', 'beijing', 'chengdu', 'xinggang']
['beijing', 'chengdu', 'shanghai', 'tianjin', 'xinggang']
['xinggang', 'tianjin', 'shanghai', 'chengdu', 'beijing']
['beijing', 'chengdu', 'shanghai', 'tianjin', 'xinggang']

        除此之外,对于sort()函数内的参数查看,若不知道里面哪些参数是必要的,可以打开查看,一般定义的方法均可看到。方法为Ctrl+鼠标左键点击,可进入函数的专属定义库,我们可以在def文件中看到key这个关键词,便是你可以改变的关键函数,有reverse,其使用bool开关,bool开关只返回两个值:Flase与True,表示该参数关闭与打开。

def sort(self: list[SupportsRichComparisonT], *, key: None = None, reverse: bool = False) -> None: ...
    @overload
    def sort(self, *, key: Callable[[_T], SupportsRichComparison], reverse: bool = False) -> None: ...
    def __len__(self) -> int: ...

        可以看到,默认该reverse是bool = Flase,默认是关闭的,我们需要将其设置为True打开反转。此方案对所有函数适用,一般程序员在面对新的库的时候,便是如此查看函数,但此方案需要鼠标与键盘同时操作,建议是多练习,不然反复查看,会降低自己的代码效率。

        Python中对于列表长度的返回,方案普遍为A = len(List),此方案返回的为元素的个数,为一个普遍的数字。

二、元组(tuple)

        元组使用小括号,其内部元素不可修改,但是可以同列表一般索引元素,元组唯一可变的方法为将其变量重新赋值,但本质上只是变量名的不同元组罢,因此,元组只可索引,不可变,想改变内部元素,要么重新赋值,要么转化为列表进行索引修改。

# 元组部分
# 元组是不可修改的
tup_num = (1, 2, 3)
tup_num[1] = 'QQ'
print(tup_num)

        由于不可修改、增加、删除,所以,此方案是错误的,其输出的结果为:

Traceback (most recent call last):
  File "d:\PythonLearn\PythonWork\3、List.py", line 60, in <module>
    tup_num[1] = 'QQ'
    ~~~~~~~^^^
TypeError: 'tuple' object does not support item assignment

        看它错误类型为:元组不支持被指定。也就是不支持修改的意思。其余方面元组与列表几乎一致。

三、字典{dictionary}

        字典为编程中最实用的东西,它可以进行一对一的映射储存,有助于显示的模拟,也可用作解题,其方案较为优势。对于字典来说,其表达方式为:{key:value,key:value}。

dic_color = {'xiaoming': 'blue', 'xiaohong': 'red', 'xiaohua': 'white'}

 1、访问字典的值      

         每个键对应一组数据,索引时索引键便可得到对应数据,如果按照位置索引,则其返回错误。

# 字典部分
dic_color = {'xiaoming': 'blue', 'xiaohong': 'red', 'xiaohua': 'white'}
A, B = dic_color['xiaohong'], dic_color['xiaoming']
print(A, B)
C = dic_color[1]
print(C)

        其中,AB是可输出的,C是会报错的:

red blue
PS D:\PythonLearn\PythonWork> & D:/Python312/python.exe d:/PythonLearn/PythonWork/3、List.py
red blue
Traceback (most recent call last):
  File "d:\PythonLearn\PythonWork\3、List.py", line 67, in <module>
    C = dic_color[1]
        ~~~~~~~~~^^^
KeyError: 1

         对于其普通访问,只可访问全部结果,不可分开访问,在后面的访问中我们可以得到更多方案对应访问。

# 普通访问方式只可访问所有键与值
D=dic_color.keys()
E=dic_color.values()
# 其输出的结果为:
dict_keys(['xiaoming', 'xiaohong', 'xiaohua']) dict_values(['blue', 'red', 'white'])

 2、改变键值对

        字典中,改变键值对同样存在三种方法:增加、修改和删除。在这里,从增加、修改、删除一一列举。

        首先由一个空字典开始,添加键值对的方法统一为索引不存在的键并赋值的方式,在删除的时候,也是del某个关键的键,便删除了某个键值对。其具体的方法如下:

# 字典的创建与修改
# 先创建一个空字典
dict_data_emp = {}
# 在空列表中添加键值对
dict_data_emp['clo'] = 'red'
dict_data_emp['prace'] = 99
print(dict_data_emp)
# 修改键值对
dict_data = dict_data_emp
dict_data['clo'] = 'green'
print(dict_data)
# 删除键值对
del dict_data['clo']
print(dict_data)

        其输出的结果每个print对应的结果如下:

{'clo': 'red', 'prace': 99}
{'clo': 'green', 'prace': 99}
{'prace': 99}

 3、get()函数使用访问值

        当我们在字典中访问不存在的键的时候,系统会出现报错,这时候,我们便可以采用get函数,这个函数如同后面的try-except找出函数的错误并返回一个规定的语句加以提醒。其具体的操作如下:

# get函数的访问值
dict_data_test = {'clo': 'green', 'prace': 99}
# 正确的get调用办法
right_def=dict_data_test.get('color','No this key')
print(right_def)
# 错误调用的方法
Wrong_def=dict_data_test['color']
# 其输出的结果为
No this key
Traceback (most recent call last):
  File "d:\PythonLearn\PythonWork\3、List.py", line 96, in <module>
    Wrong_def=dict_data_test['color']
              ~~~~~~~~~~~~~~^^^^^^^^^
KeyError: 'color'

        可以发现,当访问不存在的键的时候,采用get函数,可以避免犯错,这也是一种重要的错误规避的方式。

        至此,最基础的三种变量储存方式便学习完毕,多多练习便可以达到触类旁通。今天的学习内容到此结束。每天积累一点一滴,消息汇成江河。

  • 35
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值