python 中列表 list 相当于 其他语言(like c/c++)中的数组,但是其有更丰富的操作方法。
定义及初始化
# 普通列表
name_list = ["小红", "wayne", "张华"]
animal_list = ["dog", "cat"]
# 嵌套列表
embedded_list = ["lily", "bob", ["anna", "alice"], "zebra"]
matrix = [[1, 2, 3], [2, 4, 5], [5, 6, 2]]
增
list.append()
在列表末尾添加元素
name_list.append("小华") # 在 list 尾部添加元素 “小华”
# name_list = ['小红', 'wayne', '张华', ]
name_list.append(animal_list)
# name_list = ['小红', 'wayne', '张华', ["dog", "cat"]]
# 形成嵌套列表
list.extend()
在列表尾部增添列表(多个元素)
name_list.extend(animal_list) # 在 list 尾部添加另一list的元素
# name_list = ['小红', 'wayne', '张华', 'dog', 'cat']
如果 extend()
内参数写的是一个字符串,则会将该字符串中各字符当成字符逐个加到原 list 尾部
name_list.extend("小章")
# name_list = ['小红', 'wayne', '张华', '小', '章']
list.insert()
在列表某位置添加元素
name_list.insert(1, "vivian") # 在列表第二个元素前添加元素 “vivian”
# name_list = ['小红', 'vivian', 'wayne', '张华']
name_list.insert(1, animal_list) # 在列表第二个元素前添加 list
# name_list = ['小红', ["dog", "cat"], 'wayne', '张华']
# 形成嵌套列表
删
list.remove()
删除列表某元素,接收参数为元素值而非索引
,若list中不存在传入参数则报错
name_list.remove("张华")
# name_list = ['小红', 'wayne']
name_list.remove("张皇")
# ValueError: list.remove(x): x not in list
list.pop(int)
若有参则按索引删除某元素,无参则弹出最后一个元素
name_list.pop()
# name_list = ['小红', 'wayne']
name_list.pop(-2)
# name_list = ["小红", "张华"]
list.clear()
清空列表
name_list.clear()
# name_list = []
del list
直接从内存中删除数据
del name_list[1] # 相当于 name_list.pop(1)
# name_list = ["小红", "张华"]
del name_list # 彻底删除 name_list,变量名也不能再使用
del name_list
比 name.clear()
删除更彻底,clear 方法清空列表后,列表为空,还能重新添加元素,但 del 删除列表,连带列表名也一并从内存中抹去。
改
直接利用下标进行修改
name_list[-1] = "老铁"
# name_list = ['小红', 'wayne', '老铁']
查
-
list.count()
接收参数为字符串,若 list 内有该元素则返回该元素的个数,否则返回 0 -
list.index()
接收参数为字符串,若 list 内有该元素则返回该元素首次出现的位置索引,否则报错
排序
list.sort()
对 list 内元素进行排序(默认升序)
name_list.sort()
# name_list = ['wayne', '小红', '张华']
name_list.sort(reverse=True) # 降序排序
# name_list = ['wayne', '小红', '张华']
注意
:嵌套列表不能使用 sort() 方法
其他
-
list.reverse()
反转 list 所有元素 -
list.copy()
用于复制列表
list1 = name_list.copy()
list2 = name_list
这两种方法都可初始化 list2,区别在于第一种方法使用 copy(),list1 元素有自己的内存副本,改变 list1并不会改变 name_list;而第二种方法直接赋值相当于list2是name_list 的别名(相当于C/C++中指针),name_list 会随 list2 的改变而改变。
遍历
方法一
for name in name_list:
print(name)
方法二
for i in len(name_list):
print(name_list[i])
迭代器方法
for i in iter(name_list):
print(i)
枚举方法
for i in enumerate(name_list):
print(i) # i[0] 为索引,i[1]为元素值