Python列表介绍
1 什么是列表
列表是一组有序的元素组成,元素本身没有限制,元素与元素之间也没有任何关系,在Python中用方括号[]表示列表
列表的特性:可变、有序
2 列表相关操作
2.1 访问单个列表元素
列表是有序的,因此可以通过列表的索引访问列表的元素,特别注意索引是从0开始的,示例如下:
names = ["张无忌", "赵敏", "周芷若"]
print(names[0])
结果如下:
2.2 访问多个列表元素————列表切片
列表切片返回包含源列表部分元素的新列表,通过索引和步长实现
切片语法是:list[start_index:end_index:step]
正值索引值是0到len(list[])-1,负值索引值是-len(list[])到-1
step缺省时第二个冒号也可以省略,但start_index和end_index缺省时,两个冒号均不能省略
返回的列表元素包含start_index,不含end_index
参数默认值:start_index默认值是0,end_index默认值是len(list[]),step默认值是1
示例如下:
names = ["张无忌", "赵敏", "周芷若"]
print(names[0:2]) # 正索引
print(names[-3:-1]) # 负索引
print(names[:2]) # start_index缺省
print(names[0:]) # end_index缺省
结果如下:
特殊用法:负数step实现列表翻转
names = ["张无忌", "赵敏", "周芷若"]
print(names[::-1]) # start_index和end_index缺省
print(names[2:0:-1]) # 无法返回元素names[0]
print(names[2::-1]) # 正值索引通过缺省end_index返回元素names[0]
print(names[-1::-1])
print(names[-1:-3:-1])
结果如下:
因为step为负值,,即返回元素的方向是反向索引(从右往左),所以对应的start_index需要大于end_index缺省
反向索引切片返回的列表不含索引为end_index的元素,使用正值索引需要返回缺省end_index参数
2.3 列表元素的变更
2.3.1 修改列表元素
列表元素的修改通过索引实现,可以一次修改过个元素,修改多个元素的语法类似切片
# 修改单个元素,元素不加方括号[]
list1 = ["张无忌", "赵敏", "周芷若"]
list1[2] = "小昭"
print(list1)
# 修改不相邻的多个元素时,修改前后的序列个数必须一致
list2 = ["a", "b", "c"]
# 也可以使用list2[0:3:2] = ["d", "e"],Python会自动对可迭代的对象做一次解析,然后赋值到对应位置
list2[0:3:2] = "de"
print(list2)
# 修改相邻的多个元素时,修改前后的序列个数可以不同,使用该方法可以变更元素数量
list3 = ["a", "b", "c"]
# 也可以是list3[3:] = "de"
list3[3:] = ["d", "e"]
print(list3)
结果如下:
2.3.2 向列表插入元素
向列表任意位置插入元素,使用list[].insert()方法
语法为:
list.insert(index, object)
将object插入到索引index位置,对应位置及之后原来的元素顺位后移,示例如下:
names = ["张无忌", "赵敏"]
names.insert(1, "小昭")
print(names)
结果如下:
向列表末尾添加元素,使用list[].append()方法
语法为:
list.append(object)
object元素被添加至原列表末尾,示例如下:
names = ["张无忌", "赵敏"]
names.append("小昭")
print(names)
结果如下:
2.3.3 删除列表元素
使用del语句删除元素
语法为:
del list[start_index, end_index, step]
删除的元素就是切片返回的元素,示例如下:
names = ["张无忌", "赵敏", "周芷若"]
del names[0:3:2]
print(names)
结果如下:
使用list.pop()方法删除元素
pop()方法删除元素后会弹回元素,在不重复抽奖等程序中常使用
语法为:
list.pop(index)
将索引为index的元素list[index]从原列表删除并返回,index缺省时,默认删除末尾元素,示例如下:
names = ["张无忌", "赵敏", "周芷若"]
name = names.pop()
print(names)
print(name)
结果如下:
使用remove()方法删除元素
remove()方法可以根据值删除元素
语法为:
list.remove(value)
该方法只会删除列表中首个值为value的元素,如果值不在列表中,则会报错,示例如下:
names = ["张无忌", "赵敏", "周芷若", "张无忌"]
names.remove("张无忌")
print(names)
结果如下,第二个张无忌并没有被删除: