Python列表的相关操作与方法
1.列表
-
why:int、bool、str存在缺陷
- str:存储少量的数据;所有的操作获取的内容都是 str类型,存储的数据类型单一。
-
what:
- 列表可以承载任意数据类型,存储大量的数据。
- Python常用的容器型数据类型。list 列表,其它语言:Java:数组
- 列表是有序的,可索引,切片(步长)。 (
- 与字符串稍有一点区别(取出来的元素数据类型不同))
- 索引、切片(一切片 就是一个小列表)、步长
li = [100,'taibai',True,[1,2,3]] #索引 # print(li[0] , type(li[0])) # print(li[1],type(li[1])) #切片 (顾头不顾腚) #print(li[:2])
- 相关练习题:
li = [1, 3, 2, "a", 4, "b", 5,"c"] 通过对li列表的切片形成新的列表l1,l1 = [1,3,2] 通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"] 通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"] 通过对li列表的切片形成新的列表l6,l6 = ["b","a",3]
2. 列表的常用操作与方法
1. 列表的创建
- 方式一:
l1 = [1,2,'abc']
- 方式二:
l1 = list()
l1 = list('feajoijae')
- 方式三:列表推导式:
- 根据现有元素,和已经确定的推导规则,可以依次推出新的列表的每一项。
lis1 = [1,2,3,4,5,6]
lis2 = [x**x for x in lis1]
print(lis2) #[1, 4, 27, 256, 3125, 46656]
lis3 = [[x, x*x , x**x] for x in lis1]
lis4 = [(x, x*x , x**x) for x in lis1]
lis5 = [{x, x*x , x**x} for x in lis1]
print(lis3) #[[1, 1, 1], [2, 4, 4], [3, 9, 27], [4, 16, 256], [5, 25, 3125], [6, 36, 46656]]
print(lis4) #[(1, 1, 1), (2, 4, 4), (3, 9, 27), (4, 16, 256), (5, 25, 3125), (6, 36, 46656)]
print(lis5) #[{1}, {2, 4}, {27, 9, 3}, {16, 256, 4}, {25, 3125, 5}, {46656, 36, 6}]
2. 增
- append, 列表最后追加一个元素
l1 = ['太白','女神','吴老师','xiao','阎龙']
l1.append('xx')
print(l1)
#注意:
print(l1.append('xx')) ##None ##打印错了,只是一种追加的方式,没有返回值
- insert,在列表任意位置插入
l1 = ['太白','女神','吴老师','xiao','阎龙']
l1.insert(2,'xx')
print(l1)
- extend,列表最后迭代追加一组数据(组成对象的最小元素)
l1 = ['太白','女神','吴老师','xiao','阎龙']
l1.extend('abcd')
l1.extend(['alex']) #组成对象的最小元素
2. 删
-
pop 按照索引位置删除,返回删除的元素
- (只有pop操作返回,其它都不返回)
- pop() 默认删除最后一个
l1 = ['太白','女神','吴老师','xiao','阎龙'] l1.pop(-2)
-
remove 删除指定元素
- 如果有重名元素呢?默认删除从左数第一个元素
l1.remove('xiao')
-
clear() 清空 元素没了,为空列表
-
del
- 按照索引删除
del l1[-1]
- 按照切片删除
del l1[::2]
3. 改
- 按索引改
l[0] = 'nm'
- 按切片改
l = ['太白', 'alex', 'WuSir', '女神']
l[1:3] = 'abcdefg'
print(l) # ['太白', 'a', 'b', 'c', 'd', 'e', 'f', 'g', '女神']
- 按切片(步长)(必须一一对应)
l = ['太白', 'alex', 'WuSir', '女神']
l[::2] = '对应'
print(l) # ['对', 'alex', '应', '女神']
4. 查
- 索引、切片
- 循环
- 其它操作:
- sort 排序
- reverse 列表中的元素 反向存放
- 列表可以相加也可以与整数相乘
5. 列表的嵌套
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
将列表中的字符串"1"变成数字101(用两种方式)。
#方法1:
del lis[3][2][1][2]
lis[3][2][1].insert(2,101)
#方法2: ##不知道索引的前提下
def fun(lis):
for i in lis:
if type(i) is list:
# if isinstance(i , list):
fun(i)
elif i == '1':
a = lis.index('1')
del lis[a]
lis.insert(a,101)
fun(lis)
print(lis)
注意:有些函数是针对字符串的 如replace ,有些是针对列表的,注意使用时候区分