1.1.5 列表
以下方法均在 python 解释器中进行了测试, 读者时, 记得去掉注释符.
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # ****************** 通过 list 类创建的对象 ******************
- # list 类, 列表
- # 1: 列表的格式
- # li = [12, 中国,"qwer",True,[12,"wqwq",[11,22,33,"44"],1323]]
- # 2: 列表用中括号括起来, 列表元素之间以逗号隔开;
- # 列表中可以嵌套任意类型的对象;
- # 3: 列表可以进行索引和切片的操作, 也可以通过索引和切片取值
- # li = [12,"中国","qwer",True,[12,"wqwq",[11,22,33,"44"],1323]]
- # print(li[4][2][3]) #索引
- # print(li[4][2][1:3]) #切片
- # 4: 列表是有序的可变对象, 列表内的元素可以原地修改, 增加, 删除
- # li = [12,"中国","qwer",True,[12,"wqwq",[11,22,33,"44"],1323]]
- # del li[1] #索引删除某个元素
- # del li[1:4] #切片删除元素
- # print(li)
- # li.append("1111") #在末尾增加某个元素
- # print(li)
- # li [1] = "china" #索引修改某个元素
- # print(li)
- # li [1:4] = [12,34,56] #切片修改某个元素
- # print(li)
- # 5:for 循环, while 循环, 列表对象也是可迭代的, 即就是可以通过 for 来遍历
- # li = [12,"中国","qwer",True,[12,"wqwq",[11,22,33,"44"],1323]]
- # for x in li:
- # print(x)
- # 6: 可以进行 in,not in,len 等操作
- # li = [11,22,33,44]
- # a = 11 in li
- # print(a)
- # a = 11 not in li
- # print(a)
- # a = len(li)
- # print(a)
- #7: 列表与字符串转换
- # 列表转换为字符串:
- # 一: 列表里面全部都是字符串, 可以通过 jion 来讲列表转换为字符串
- # li = ["hello","world","i","am","19","age"]
- # st = " ".join(li) #可以设置连接符
- # print(st)
- # 二: 列表里面不全都是字符串, 通过 for 循环来转换为字符串
- # li = ["i","am",19,"years","old"]
- # s = ""
- # for i in li:
- # s = s + str(i)
- # print(s)
- # 字符串转换为列表: 通过 list 转换, list 内部使用 for 来转换
- # s = "1234qwer"
- # li = list(s)
- # print(li)
- # ******************list 类中提供的方法 ******************
- # 1:append 方法: 向列表末尾增加元素
- # li = [11,22,33,44,"qwer"]
- # li.append("qq")
- # print(li)
- # 2:clear 方法: 清空列表
- # li = [11,22,33,44,"qwer"]
- # print(li)
- # li.clear()
- # print(li)
- # 3:copy 方法: 浅拷贝, 只复制列表的一级元素
- # li1 = [11,22,33,44,[12,213,12,13],"qwer"]
- # li2 = li1.copy() #浅拷贝如果有嵌套, 嵌套内容的更改会同时影响到拷贝方和被拷贝方, 因为指向同一个地址
- # print(li2)
- # li1 [4][2] = "aaa"
- # print(li1)
- # print(li2)
- # li2 [4][2] = "bbb"
- # print(li1)
- # print(li2)
- # 4: 深拷贝, 导入 copy 库, 进行深拷贝操作
- # import copy
- # li1 = [11,22,33,44,[12,213,12,13],"qwer"]
- # li2 = copy.deepcopy(li1) #深拷贝, 嵌套内容的更改不会同时影响到拷贝方和被拷贝方, 因为深拷贝在内存开辟了另一个空间
- # print(li2)
- # li1 [4][2] = "aaa"
- # print(li1)
- # print(li2)
- # li2 [4][2] = "bbb"
- # print(li1)
- # print(li2)
- # 5:count 方法: 计算列表内的元素出现的次数
- # li = [11,22,33,44,44,55,77,88,"44",[11,22,44]]
- # a = li.count(44) #count 只会计算一级元素的个数
- # print(a)
- # 6:extend 方法: 扩展列表, 将传入的可迭代对象进行遍历扩展在列表末尾; 注意: extend 传入的参数必须是可迭代的
- # li = [11,22,33,44]
- # a = li.extend("11111")
- # print(a) #可变对象进行扩展操作后没有返回值
- # print(li)
- # a1 = li.extend(["qq",77,88])
- # print(li)
- # 7:index: 查找元素索引
- # li = [11,22,33,44,"qq"]
- # print(li.index(33))
- # 8:insert 方法: 在列表中插入元素, 如果超过最大索引则会在末尾追加
- # li = [11,22,33,44,"qq"]
- # li.insert(2,[111,11])
- # print(li)
- # print(li.insert(2,666)) #insert 方法也没返回值
- # 9: 删除列表元素
- # li = [11, 22, 33, 44,22,"qq",66,77,88,99]
- # a1 = li.pop() #pop 方法默认从末尾开始删除, 并获取删除的值
- # print(a1)
- # print(li)
- # a2 = li.pop(3) #pop 方法也可以指定索引进行删除, 并获取删除的值
- # print(a2)
- # print(li)
- # a3 = li.remove(22) #remove 指定元素进行删除, 最左优先从左边开始删除
- # print(a3) #remove 方法没有返回值; 如果删除列表中没有的元素会报错
- # print(li)
- # 10:reverse 方法: 翻转列表中的元素
- # li = [11,22,33,44,"a","c","d"]
- # li.reverse() #没有返回值
- # print(li)
- # 11:sort 方法: 对列表的元素进行排序, 没有返回值; 默认是进行从小到大排序, 而且元素必须同时为数字或者字符串
- # li = ["a","c","w","0"] #reverse 参数默认为 False, 也就是默认是进行从小到大排序
- # li.sort(reverse = True) #reverse 参数设置为 True 时, 进行从大到小排序
- # print(li)
列表的常用方法
来源: http://www.bubuko.com/infodetail-3234078.html