第三章-2-数据类型补充(字典,列表,字符串)

本节对应书本P72-P74

 

==========列表==========

列表(list)

列表是一种有序的集合

 

===创建列表===

列表名 = [元素1,元素2]

用中括号括起来,用逗号分隔元素与元素

 

比如,我们可以用一个列表来存储班级中学生的名字

classmate = ['卡','卡卡','卡夫卡']

classmate就是一个列表数据类型的变量

 

当然,列表中存储的元素类型并没有限制

test=['123',123,3.0,True]

 

 

===访问列表中的元素===

可以用索引来访问列表中每一个位置的元素

 

索引包括正索引和负索引

 

正索引:从0开始,从左到右依次递增

如我们创建一个列表list1,用于存储各种颜色

list1 = ['red','green','blue','yellow','white','black']

 

 

 

 

如何访问对应元素?

通过 列表名[索引]

 

 

 

 

负索引:从-1开始,从右到左依次递减

 

 

 

 

当索引超出范围时,python会报错,如下

list index out of range:列表索引超出范围

 

 

 

所以要确保索引不要越界

 

 

===切片操作===

我们可以可以通过

列表名[开始元素序号:结束元素序号:步长]

来访问一定范围内的多个元素,其中步长默认为1,开始序号默认为左端点

如下图nums[2:7]等价于nums[2:7:1];

可以先写下开始和结束 2…7

然后以步长为间隔填补之间的空隙

2…3…4…5…6…7

要牢记,python中涉及步长的部分绝大多数符合‘顾头不顾尾原则‘;所以我们要舍去尾索引7

因此最终得到的索引为2,3,4,5,6

取出的是nums列表中索引从2到6的元素组成的子列表

[30,40,50,60,70]

 

【例题】

当步长为负时又会发生什么呢?我们依然创建nums列表并赋值

nums=[10,20,30,40,50,60,70,80,90]

请描述nums[8:5:-1]会返回什么?

 

答案:[90,80,70]

解析:

先写下头与尾

8…..5

用步长为间隔填补其中的空隙

8…7…6…5

顾头不顾尾,舍去5

所以得到索引8,7,6

取出对应的[90,80,70]子列表

 

 

==========字典==========

 

字典(dict,全称dictionary)

字典中存储的是一个个的键-值对(key-value)

 

===创建字典===

字典名 = {key1 value1key2 :value2,key3value3}

字典中的每个键值keyvalue对用冒号分隔,每个对之间用逗号分隔,整个字典包括在花括号中

 

注意

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

 

我们创建一个字典实例,键用于存储科目而值用于存储对应的平均分

score={'语文':80,'数学':77.9,'技术':87.4}

 

===访问字典里的值===

可以通过键来访问字典里的值

字典名[键]

 

【例题】

 

请取出如下字典中的 ‘wow’

dict = {'1':'wow'}

 

答案:dict['1']

解析:需要注意的是dict字典中存放的了一对键值对;其中键是字符串类型的1而值是字符串形式的wow;因此访问'wow',要通过 【字符串】类型的1访问 

 

同理

创建如下字典

Dict = {1:'wow'}

通过Dict[1]访问'wow';此处D大写(变量命名规则-区分大小写),1是整型的1

 

 

===列表字典嵌套===

列表嵌套列表

列表中的元素还可以是另一个列表

a=[1,'he',['k','p','i'],1.2]

列表a中一共有4个元素

1和'hehe'和['k','p','I']和1.2

其中a[2]是一个列表

拆开写更好理解

b=['k','p','i']

a=[1,'he',b,1.2]

要取到'k'可以用b[0]或者a[2][0]

 

列表嵌套字典

列表中的元素还可以是一个字典

a=[1,'he',{'xixi':'getdaze'},1.2]

拆开写

b={'xixi':'getdaze'}

a=[1,'he',b,1.2]

显然,为了访问'getdaze'可以用b['xixi']或者a[2]['xixi']

 

 

【例题】

取出如下字典中的'测试'和'例子'

test={1:{'haha':'测试'},'o':[1,'例子']}

 

 

 

 

答案:

1.test[1]['haha']

2.test['o'][1]或者test['o'][-1]

 

解析:

1中第一个中括号中的[1]是字典的键,第二个中括号中的['haha']也是字典的键

2中第一个中括号中的['o']是字典的键,第二个中括号中的[1]或[-1]是列表的索引

 

==========字符串==========

对于字符串,我们也可以通过索引取出元素或是进行切片操作

 

如创建以下字符串并通过索引取出元素

 

切片操作

 

 

 

 

【例题】

创建如下字符串,回答如下操作结果

 

 

 

#1

结果为','

 

#2

结果为'[2]'

解析:

写下开头和结尾索引0…8用步长为间隔填满空隙

0…3…6…8顾头不顾尾

得索引为0,3,6

得对应子字符串为'[2]'

 

#3

结果为'cba'

写下开头和结尾索引-2…-7用步长为间隔填满空隙

-2…-4…-6…-7顾头不顾尾

得索引为-2,-4,-6

得对应子字符串为'cba'

 

 

posted @ 2021-11-23 10:18  半月黄昏  阅读(100)  评论(0)    收藏  举报