【Python学习】序列之列表
最近准备系统学习python,为了以后能及时查找到,先记录下.
先说下啥叫序列,之前在用,感觉这个概念有个模糊,今天特意看了下,序列是python中最基本的数据结构,序列中的每一个元素都被分配一个序号,即元素的位置,也成为索引。类似于“数组”。python中包含6种内建序列,即列表,元组,字符串,Unicode字符串,buffer对象和xrange对象。
1.列表的内容是可变的(相对于元组),一般使用“[]”和“,”,如 M= [1,2,3,4]
2.列表元素操作:
(1)元素赋值:可以类似于数组赋值进行列表赋值,可以对一个列表中的元素赋不同类型的值,但不能为一个不存在的元素的位置进行赋值。
(2)增加元素:可使用list.append(obj),list代表列表,obj代表需要添加到list列表末尾的对象。
(3)删除元素:del M[0]
(4)分片赋值:常使用list()函数
a.若M=list(‘今天天气多云’),['今','天','天','天','气','多','云'],list()函数可以直接将字符串转换为列表。
b.若M=list('ae'),M[1:]=list('bcd'),list()函数可以使用与原序列不等长的序列将分片替换。
c.若M=list('今天天气不错'),M[2:2]=list('安徽省'),list函数可以在不替换任何原有元素的情况下在任意位置插入新元素。
d.可利用分片赋值进行元素删除,将准备删除的元素置为空,可对一个序列中任意位置的元素进行删除。
3.列表是可嵌套的。
4.列表的方法
(1)list.append(obj),是在列表的末尾添加新对象
(2)list.count(obj),用于统计某个元素在列表中出现的次数,list代表列表,obj代表列表中统计的对象
(3)list.extend(seq),list代表列表,seq代表元素列表
与序列相加的主要区别:extend()方法修改了被扩展的序列,原始的连接操作会返回一个全新的列表
(4)list.index(obj),用于从列表中找出某个值第一个匹配项的索引位置。
(5)list.insert(index,obj),list代表是列表,index代表对象obj需要插入的索引位置,obj代表是插入列表中的对象。用于从列表中找出某个值第一个匹配项的索引位置。
(分片赋值也可实现)
(6)list.pop(obj=list[-1]),list代表是列表,obj为可选择的参数,代表要移除列表元素的对象。用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
a.list.pop(),不传参数,默认移除最后一个元素
b.list.pop(2),删除a[2]元素
pop方法是唯一一个既能修改列表又能方法元素值(除了None)的列表方法。
注:pop方法可实现一种常见的数据结构—栈,类似于堆放盘子,LIFO(last in firsr out),后进先出。入栈(push),python没有入栈方法,但可以使用append方法替代,出栈(pop)。
(7)list.remove(obj),list代表是列表,obj为列表中要移除的对象。用于移除列表中某个值的第一个匹配项。是一个没有返回值的原位置元素变更方法。
(8)list.reverse(),list代表是列表,该方法不需要传入参数。用于反向列表中的元素。是一个没有返回值的原位置元素变更方法。
(9)list.sort(func),list代表列表,func为可选参数,若指定参数,会使用该参数的方法进行排序。
对列表进行排序,且保持原列表排列顺序,先将原始列表使用切片方式进行赋值,如b = a[:]
(10)list.sorted(),直接获取原始列表副本进行排序
(11)list.clear(),list代表列表,不需要传入参数。用于清空列表。
(12)list.copy(),list代表列表,不需要传入参数。用于赋值列表,类似于a[:]
(13)高级排序,sort方法有两个可选参数,即key,reverse。
#len按字符串长度由短到长进行排序
#传入2个参数,按照字符串长度由长到短进行排序
#排序后逆序
2018/4/22