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)
结果如下,第二个张无忌并没有被删除:
2.3.4 列表相加和列表的乘法
列表和列表可以直接相加,语法为:list1+list2
列表的乘法是对列表元素的复制,常用来生成元素重复的列表,语法为:list*number
示例如下:
names1 = [\'张无忌\', \'赵敏\', \'白眉鹰王\']
names2 = [\'周芷若\', \'小昭\']
names3 = names1 + names2
names4 = names1 * 3
print(names3)
print(names4)
结果如下:
2.4 变更列表元素顺序
2.4.1 list.sort()方法——对列表永久排序
语法为:
list.sort(key=None, reverse=False)
- key:一个函数,只有一个参数,函数的输入就是列表元素,根据输出结果对原列表进行排序
- reverse:排序规则,reverse = True 降序, reverse = False 升序(默认)
sort()方法对原列表进行修改,属于不可逆的永久排序,示例如下:
names = [\'张无忌\', \'赵敏\', \'白眉鹰王\']
names.sort(key=len, reverse=True) # 以元素的长度为key进行排序
print(names)
结果如下:
2.4.2 sorted()函数——对列表临时排序
语法为:
sorted(key=None, reverse=False)
- key:一个函数,只有一个参数,函数的输入就是列表元素,根据输出结果对原列表进行排序
- reverse:排序规则,reverse = True 降序, reverse = False 升序(默认)
sorted()函数排序后返回新的列表,不对原列表做更改,示例如下:
names = [\'张无忌\', \'赵敏\', \'白眉鹰王\']
now_names = sorted(names, key=len, reverse=True) # 以元素的长度为key降序排序
print(now_names)
print(names)
结果如下:
2.4.3 reserve()方法——翻转列表
reserve()方法是对原列表操作,属于永久操作,需要恢复到以前的顺序,再次使用reserve()方法即可,示例如下:
names = [\'张无忌\', \'赵敏\', \'白眉鹰王\']
names.reverse()
print(names)
结果如下:
来源:https://www.cnblogs.com/programmer4027/p/14713896.html
图文来源于网络,如有侵权请联系删除。