lst = ["bob","jack","马云","马化腾","王健林"]

del lst[1:3]

print(lst)

一、列表索引和切片

lst = ["移动硬盘", "手机", 110, True, False, ["人民币", "美金", '欧元']]

lst = ["海上钢琴师", "奥特曼", "咒怨", "舌尖上的中国", "穹顶之下", "金刚"]

print(lst[3][2])   # 上
print(lst[-2]) # 穹顶之下
print(lst[1:4]) # ['奥特曼', '咒怨', '舌尖上的中国']
print(lst[-3:-1]) # 顾头不顾尾
print(lst[1::2])
print(lst[-1:-5:-2])

二、列表增加

2.1 append

lst = ["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚"]

在屁股后面添加
lst.append("黄宏") # 在原有的基础上进行的操作

2.2 insert

# 在xxx位置插入xxxx内容

lst = ["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚"]

lst.insert(1,"王力宏")

print(lst)

["赵四","王力宏","施瓦星格", "黄渤", "郭达森", "赛利亚"]

2.3 extend

# 迭代添加

lst = ["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚"]
lst.extend("麻花藤")
print(lst)
["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚","麻","花","藤"]

lst = ["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚"]
lst.extend(["麻花藤", "马云"])
print(lst)
["赵四", "施瓦星格", "黄渤", "郭达森", "赛利亚","麻花藤", "马云"]

2.4 如果对列表中空的 slice 赋值,就变成了为列表插入元素

# 将第3个到第3个(不包含)元素赋值为新列表的元素,就是插入
b_list[2: 2] = ['x', 'y']
print(b_list)
# [1, 'a', 'x', 'y', 'b', 4]

三、列表删除

3.1 pop()

# 根据索引删除元素

lst = ["bob","jack","马云"]
data = lst.pop() #pop()不加索引,默认删除末尾元素,并返回被删除的数据
print(data)
"马云"
print(lst)
["bob","jack"]

3.2 remove()

lst = ["bob","jack","马云"]
lst.remove("bob") # 删除元素.
lst.remove("刘能") # 如果不存在会报错

3.3 del

# 切片删除

lst = ["bob","jack","马云","马化腾","王健林"]
del lst[1:3]
print(lst)
["bob","马化腾","王健林"]

3.4 如果将列表其中一段赋值为空列表,就变成了从列表中删除元素

# 将第3个到第6个(不包含)元素赋值为空列表,就是删除
b_list[2: 5] = []
print(b_list) # [1, 'a', 4]

四、列表修改

4.1 对元素赋值

a_list = [2, 4, -3.4, 'crazyit', 23]
# 对第3个元素赋值
a_list[2] = 'fkit'
print(a_list)
# [2, 4, 'fkit', 'crazyit', 23]

4.2 对列表中间一段赋值

b_list = list(range(1, 5))
print(b_list)
# 将第2个到第4个(不包含)元素赋值为新列表的元素
b_list[1: 3] = ['a', 'b']
print(b_list)
# [1, 'a', 'b', 4]

4.3 使用字符串赋值,Python 会自动把字符串当成序列处理,其中每个字符都是一个元素。

# Python会自动将str分解成序列

b_list = list(range(1, 5))

b_list[1: 3] = 'Charlie'
print(b_list) # [1, 'C', 'h', 'a', 'r', 'l', 'i', 'e']

4.4 在使用 slice 语法赋值时,也可指定 step 参数。但如果指定了 step 参数,则要求所赋值的列表元素个数与所替换的列表元素个数相等

c_list = list(range(1, 10))
# 指定step为2,被赋值的元素有4个,因此用于赋值的列表也必须有4个元素
c_list[2: 9: 2] = ['a', 'b', 'c', 'd']
print(c_list) # [1, 2, 'a', 4, 'b', 6, 'c', 8, 'd']

五、列表常用方法

5.1 count()

# 统计元素出现的次数

a_list = [2, 30, 'a', [5, 30], 30]
# 计算列表中30的出现次数
print(a_list.count(30))
# 计算列表中[5, 30]的出现次数
print(a_list.count([5, 30]))

5.2 index()

# 查找元素的index

a_list = [2, 30, 'a', 'b', 'crazyit', 30]
# 定位元素30的出现位置
print(a_list.index(30))
# 从索引2处开始、定位元素30的出现位置
print(a_list.index(30, 2))
# 从索引2处到索引4处之间定位元素30的出现位置,因为找不到该元素,会引发 ValueError 错误
print(a_list.index(30, 2, 4))

运行结果为:

1
5
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 7, in <module>
print(a_list.index(30, 2, 4)) # ValueError
ValueError: 30 is not in list

5.3 reverse()

# reverse() 方法会将列表中所有元素反向存放

a_list = list(range(1, 8))
# 将a_list列表元素反转
a_list.reverse()
print(a_list)

运行结果为:

[7, 6, 5, 4, 3, 2, 1]

5.4 sort()

# sort() 方法用于对列表元素进行排序

语法结构:

listname.sort(key=None, reserse=False)
  • key 参数用于指定从每个元素中提取一个用于比较的键。例如,使用此方法时设置 key=str.lower 表示在排序时不区分字母大小写。
  • reverse 参数用于设置是否需要反转排序,默认 False 表示从小到大排序;如果将该参数设为 True,将会改为从大到小排序。

例如如下代码:

a_list = [3, 4, -2, -30, 14, 9.3, 3.4]

# 对列表元素排序

a_list.sort()

print(a_list)

b_list = ['Python', 'Swift', 'Ruby', 'Go', 'Kotlin', 'Erlang']

# 对列表元素排序:默认按字符串包含的字符的编码大小比较

b_list.sort()

print(b_list) # ['Erlang', 'Go', 'Kotlin', 'Python', 'Ruby', 'Swift']

运行结果为:

[-30, -2, 3, 3.4, 4, 9.3, 14]
['Erlang', 'Go', 'Kotlin', 'Python', 'Ruby', 'Swift']

如下代码示范了 key 和 reverse 参数的用法:

b_list = ['Python', 'Swift', 'Ruby', 'Go', 'Kotlin', 'Erlang']

# 指定key为len,指定使用len函数对集合元素生成比较的键,也就是按字符串的长度比较大小

b_list.sort(key=len)

print(b_list)

# 指定反向排序

b_list.sort(key=len, reverse=True)

print(b_list)

运行结果为:

['Go', 'Ruby', 'Swift', 'Python', 'Kotlin', 'Erlang']
['Python', 'Kotlin', 'Erlang', 'Swift', 'Ruby', 'Go']

上面两次排序时都将 key 参数指定为 len,这意味着程序将会使用 len() 函数对集合元素生成比较大小的键,即根据集合元素的字符串长度比较大小。

注意,采用 sort() 方法对列表进行排序时,对中文支持不好,其排序结果与常用的音序排序法或者笔画排序法都不一致,因此,如果需要实现对中文内容的列表排序,还需要重新编写相应的方法进行处理,而不能直接使用 sort() 方法。

最新文章

  1. c# 进程间的通信实现之一简单字符串收发
  2. HTML5打造的炫酷本地音乐播放器-喵喵Player
  3. js的元素对象
  4. ELK 安装与配置
  5. oracle安装心得
  6. Android使用OkHttp实现带进度的上传下载
  7. 日期:Date
  8. PSD 转化成 HTML
  9. Skinned Mesh原理解析和一个最简单的实现示例
  10. php 封装Mysql数据库操作类
  11. Java面试12|Linux及Shell脚本
  12. 【原创】大叔经验分享(50)hue访问mysql(librdbms)
  13. 牛客小白月赛13 小A的柱状图(单调栈)
  14. Centos7.6安装Oracle数据库
  15. hdu4847 Wow! Such Doge! KMP
  16. MP实战系列(十二)之封装方法详解(续二)
  17. excel中的数据粘贴不全到plsql中,excel 粘贴后空白,Excel复制粘贴内容不全
  18. symfony 命令
  19. 多边形游戏(DP)
  20. poj3348凸包面积

热门文章

  1. java执行命令行,以及解决卡死问题
  2. Bader分析
  3. DNS 搜索 - dig 命令
  4. saml2协议sp-initial登录过程
  5. springMVC4+spring4+hibernate4框架搭建
  6. java 上传文件到FTP(centos中的ftp服务)
  7. oracle data guard --理论知识回顾02
  8. hibernate 1 连接数据库、操作表
  9. cocos2dx基础篇(19) 基本动作CCAction
  10. ipad已停用 连接itunes怎么办