python内置对象类型(二)列表list及列表和字符串的转换、比较

一、列表的定义和基本操作

区别于C++的 list <T>(链表容器) 是一个长度可变的、由 T 类型元素组成的序列,它以双向链表的形式组织元素

python里面列表list
实际是一个序列 因此上一节中序列的所有相关操作都适用于列表
如“+拼接,*重复,len()求长度,in判断元素,索引和切片”
传送门:
序列的相关操作 https://blog.csdn.net/Wjf7496/article/details/109342788

二、列表list的元素特点

元素可以是任何python的内置对象类型和自定义的对象类型
列表是个筐,什么都能装(据此可以说列表list是个容器)

元素有顺序 顺序不同就是两个不同的列表,即使元素值都一样
元素可重复
元素可修改 但是某个列表修改元素后还是原来那个列表
python内置对象类型(二)列表list及列表和字符串的转换、比较
python内置对象类型(二)列表list及列表和字符串的转换、比较

区分python里面list列表同字符串str的区别

list可以修改某个元素的值 ,str不可以修改 和java的String类一样,java的String类是一个final类只要String对象一经创建,String对象不可修改删除或者替换字符序列中的某个字符,String类对象是一种不可变对象
python内置对象类型(二)列表list及列表和字符串的转换、比较
同时区分java的String、python的str和C++的串string的区别
c++ string可以修改
python内置对象类型(二)列表list及列表和字符串的转换、比较

三、列表的方法

python内置对象类型(二)列表list及列表和字符串的转换、比较

python内置对象类型(二)列表list及列表和字符串的转换、比较

1、增加元素

append(object)追加object
该操作没有返回值,即没有生成新的列表对象 还是原来那个 追加后该对象的内存地址不会变,只是list容器里面的元素增加了,因此没必要写lst1=lst.append();

insert(index,object)index之前插入object

extend(iterable) 尾部追加可迭代对象iterable的元素
注意不是把可迭代对象本身追加到列表,而是追加可迭代对象的元素
python内置对象类型(二)列表list及列表和字符串的转换、比较
目前学习的可迭代对象有字符串和列表

2、删除元素

remove(val) 删除元素val的首次出现 不返回该元素也不返回索引
pop(index) 删除index位置的元素并返回该被删除的元素的值
无参数index,默认为-1 即最右边那个元素
python内置对象类型(二)列表list及列表和字符串的转换、比较
clear() 删除全部元素,但是列表仍然存在/内存没有释放掉 只是是一个什么元素都没有的空列表相当于是把列表这个框里面的全部元素删除 但是这个框还在
python内置对象类型(二)列表list及列表和字符串的转换、比较
区分对列表赋值空列表 此时原来的那个列表[1,4,2]已经被当作垃圾回收,相当于是新建了一个空列表
python内置对象类型(二)列表list及列表和字符串的转换、比较

3、排序

**sort()**原地排序无返回值
当列表中所有元素类型都要一样时才可以排序
无参数默认升序排序,带参数 reverse=True降序排列
python内置对象类型(二)列表list及列表和字符串的转换、比较
reverse()和 切片lst[::-1]反序
切片逆序实际是产生了一个新的列表对象 而reverse没有
python内置对象类型(二)列表list及列表和字符串的转换、比较
count(self, value, /)
Return number of occurrences of value.

四、列表与字符串的比较

都是序列 都是可迭代对象
列表式容器类可变对象 字符串是不可变对象

字符串和列表互换
字符串->列表 list(s) 字符串中每一个字符做列表的元素

列表元素->字符串 “”.join()
列表->字符串 str(lst) 包括了列表里面的中括号逗号等等

python内置对象类型(二)列表list及列表和字符串的转换、比较