python学习笔记06:列表&元组

Python有6个序列的内置类型,即列表、元组、字符串、Unicode字符串、buffer对象和 xrange 对象,但序列通用的操作包括:索引、长度、组合(序列相加)、重复(乘法)、分片、检查成员、遍历、最小值和最大值。

在Python的内置类型中,最常见的是列表和元组。

列表
1.可以作为一个方括号内的逗号分隔值出现;
2.列表的数据项不需要具有相同的类型,只要把逗号分隔的不同的数据项使用方括号括起来即可。即[]中,可以有字符串、数字、变量、列表等等元素,元素之间用英文逗号隔开,每个元素的位置可用下标表示,从0开始依次递增。

列表

知识要点1&运行结果1:列表-查

python 列表中是否包含指定字符 列表中可以包含元组吗python_python 列表中是否包含指定字符


注:

切片操作时,类如names[x,y]的形式中,只要序号x、y都为非空时,取值则取names[x]到names[y-1]的连续的值。知识要点2&运行结果2:列表-增

python 列表中是否包含指定字符 列表中可以包含元组吗python_python 列表中是否包含指定字符_02

知识要点3&运行结果3:列表-改

python 列表中是否包含指定字符 列表中可以包含元组吗python_元组_03


知识要点4&运行结果4:列表-删

python 列表中是否包含指定字符 列表中可以包含元组吗python_python 列表中是否包含指定字符_04

知识要点5&运行结果5:列表-统计

python 列表中是否包含指定字符 列表中可以包含元组吗python_python 列表中是否包含指定字符_05


知识要点6&运行结果6:列表-清空

python 列表中是否包含指定字符 列表中可以包含元组吗python_字符串_06


知识要点7&运行结果7:列表-反转

python 列表中是否包含指定字符 列表中可以包含元组吗python_字符串_07


知识要点8&运行结果8:列表-排序

python 列表中是否包含指定字符 列表中可以包含元组吗python_字符串_08


知识要点9&运行结果9:列表-合并

python 列表中是否包含指定字符 列表中可以包含元组吗python_python 列表中是否包含指定字符_09


知识要点10&运行结果10:列表-复制:浅copy()

python 列表中是否包含指定字符 列表中可以包含元组吗python_内存地址_10


python 列表中是否包含指定字符 列表中可以包含元组吗python_元组_11


注:为什么列表中的小列表内容改变后,复制前后的列表都有变化;但修改原列表内某一内容后,复制的列表却没同步复制?

答:根据程序运行先后,先进行的复制操作,后进行的修改列表中内容的操作,所以新列表第一层copy的内容无变化。

但原列表中的小列表,实际上是一个独立的内存指针,自己独立占内存部分,在大列表中用列表表示出来的只是一个内存地址,

所以copy时,小列表只是copy了一个内存地址,内存地址只有一个,如果names将其地址变了,names2展示该内存地址时也不一样了;

反之,names2将其地址变了,name展示该内存地址时也随之要统一。所以说,copy时只是copy了列表的第一层,没有copy第二层。

而为什么大列表本身作为一个内存地址,使用copy时复制了第一层呢?因为copy的构造就是这样的,功能就是可以复制列表的第一层。

------这个就叫做“浅copy”。而深层次的copy是把全部列表内容copy过来(和原内容所占内存不一样,所以全部copy过来不代表两份内容所占内存位置一样,和变量a = b不一样),这就需要import一个copy模块,即import copy;而引用时需引用deepcopy()方法,如果引用copy(),就和浅copy一样了。

总结下来,浅copy的三种形式:

  • 浅copy方式一:
•  import copy
 person = [“name”,[“saving”,100]]
 p1 = copy.copy(person) #跟上面例子中直接调用copy()方法一个效果
  • 浅copy方式二:
•  person = [“name”,[“saving”,100]]
 p2 = person[:] #全切片
  • 浅copy方式三:
•  person = [“name”,[“saving”,100]]
 p3 = list(person)

关于全切片的理解,可结合下面的例子:

python 列表中是否包含指定字符 列表中可以包含元组吗python_内存地址_12


列表-复制:深copy()==>deepcopy()

python 列表中是否包含指定字符 列表中可以包含元组吗python_python 列表中是否包含指定字符_13


列表循环:

python 列表中是否包含指定字符 列表中可以包含元组吗python_python 列表中是否包含指定字符_14

元组

元组其实跟列表差不多,也有存一组数,只不过它一旦创建,便不能修改,所以又叫只读列表
元组与列表表示的区别在于,元组() 将元素括起来。如:

names = ("刘翔","running",100,100)

元组中的方法只有两个:count()、index(),含义与列表中一致

print(names.count(100))
print(names.index(100))

什么情况下用元组?
程序写出来,有的地方是不能被改动的。比如数据库,一旦数据库被启动,有的地方不能被人改动,这部分内容就可以用元组来写。