Python学习之路(2)——标准数据类型续——列表,元组,字典,集合

0.Python之禅

可以通过在python解释器中输入import this 查看python应该注意的一些规范与原则,如下:

1.列表

元素用方括号括起,元素之间用逗号隔开,如[1,2,3,4]

三大特点:

(1)异构性

列表里想装啥就装啥,即:他可以包含不同种类、任意类型的对象,甚至可以嵌套列表

示例:

运行结果:

(2)有序性

列表里装的元素都是有顺序的,可以按照位置序号获取单个元素,也可以用分片的方法来进行多个连续元素的获取

访问元素的方法:

a.索引

与其他语言中数组的索引访问方式相似,告诉位置即可,并且位置从0开始

不同于其他语言中的数组:python提供了负数索引,-1指定倒数第一个位置,-2,-3类推

示例:

运行结果:

b.切片

在方括号中指定要使用的第一个元素和最后一个元素的索引,中间用冒号隔开,如list[1:3] ,注意此处说的是索引,即冒号两边的是索引,所以是从0开始的

还有以下常见做法:

《1》如果省略掉终止索引,就表示一直截取到末尾:

《2》如果省略掉起始索引,就表示从起始元素就开始截取:

《3》可以使用负索引,也就是从右往左的索引,最右侧是-1,向左依次为-2,-3

《4》要跳着截取,就需要多加一个冒号,第三个参数表示跳的步长,如list[0:5:2]

示例:

运行结果:

同时由示例可以注意到:当采用索引区间时,冒号右边的位置的值不会被包含

           跳着截取时,下一个元素的值为(前一个元素的位置+步长)的位置的值

疑问:如果对截取出的分片进行修改,会影响到原始的列表吗?

示例:

运行结果:

对原始列表进行切片,产生一个全新的列表,用变量获取该切片,实质上是获取了list分片的新的独立拷贝,所以对a的修改不会影响原始列表

(3)本地可修改

列表的大小和内容可以随意改变,在插入、删除、修改列表元素时,不需要建立一份新的列表拷贝,而是在原来的内存地址上直接修改列表对象

a.修改元素

索引赋值

与索引访问列表元素相似,直接给索引访问的值赋值,如list[0]=8

切片赋值:

list[1:3]=[1,2,3]

示例:

运行结果:

所以由上述示例可以看出,切片赋值,与右边界和=右边的赋值个数无关,本质是先删除切片位置的元素,再在该切片位置添加指定元素,

并且由list1可以看出,删除的时候也没有删除右边界的值,所以切片始终是左闭右开

b.添加元素

append()    -------------------   在列表的末尾添加元素

insert()       -------------------   在列表的任何位置添加新元素,需要指定索引和值,插入是就地修改,而不是返回修改后的新列表

extend()     -------------------   在尾部一次性添加多个元素,需要将多个以列表形式传入

示例:

运行结果:

c.删除元素

del list[0]               ----------------------------     删除指定元素,删除后无法再访问

pop()                  ----------------------------  删除末尾的元素,并且可以接受它的返回值,也可以不接收,在括号中传入索引时,就是删除指

                                                                     定索引处的元素

remove(值)   ------------------------------   删除指定值第一次出现的位置的元素,如果要删除的值可能在列表中出现多次,就需要使用循环                                                        来删除所有,使用remove可以接收它删除的值,也可以不接收

示例:

运行结果:

d.元素排序

sort()     -------------------------    成员函数,本地修改,对原列表进行永久性修改排列顺序,是按内置的规则排序,比如数字按照从小到大,

              字母按照字典中字母顺序,不能获取返回值,相当于C++中的引用修改

sorted()    ----------------------     全局函数,临时修改,对原列表不改变,通过它的返回值使用它

    上述两个函数都可以通过传入参数reverse=True来进行反向排序

reverse()  ----------------------    成员函数,本地修改,对原列表进行修改,只是按照元素的位置进行翻转,不能获取返回值,
                                                但可通过再次调用reserve()

示例:

运行结果:

操作列表

(1)获取列表的长度-------len(list)

(2)对数字列表进行简单的统计计算

min()      -------------------求最小值

max()     -------------------求最大值

sum()     -------------------对列表中的数字求和

示例:

运行结果:

(3)列表解析——用一行生成代码

变量名=[使用循环变量的式子 for 循环变量 in  range()]

这里的for循环不需要冒号

示例:

运行结果:

(4)遍历切片

可以使用切片来遍历列表中的部分元素

示例:

运行结果:

(5)复制列表

示例1:

运行结果1:

可以看出如果直接将一个列表赋给一个变量,此时这个变量只是这个列表的别名,如num2只是num1的别名,对num2进行修改,num1会同样变化,因为本质它们指向同一个列表

示例2:

运行结果2:

而当我们需要复制一个新的独立的列表,我们可以使用此示例中的缺省切片,会产生原列表的副本

2.元组

3.字典

4.集合

猜你喜欢

转载自blog.csdn.net/qq_34805255/article/details/84890968
今日推荐