一、列表

1.认识列表(list)

1)列表是容器型数据类型(序列);将[]作为容器标志,里面多个数据用逗号隔开:[数据1,数据2,数据3,…]

2)列表是可变的(可变指的是列表中元素的个数和元素的值可变–列表支持增删改)

​ 列表是有序的(元素有顺序对应的位置的信息,元素的顺序影响结果–列表支持下标操作)

​ 列表对元素的要求:没有要求,任何类型的数据都可以作为列表的元素。

注:元素–容器中每一个独立的数据,就是这个容器的元素

2.列表

1)空列表 list1 = []

2)列表是有序的;集合是无序的,顺序不影响结果

3)列表元素可以是任何类型的数据

1.列表的查操作

1.查单个 – 一次获取一个元素

1)语法:列表[下标]

2)说明:需要获取元素的列表对象(可以是保存一个列表的变量,也可以是具体的列数据)。索引是元素在列表中的位置信息。列表一旦确定,列表中每个元素对应的索引就确定了。

​ a.元素从前往后索引从0开始不断增加

​ b.元素从后往前从-1开始不断减少

2.切片 – 同时获取多个元素(列表切片的结果是列表)

1)完整语法:列表[开始下标:结束下标:步长]

2)说明:开始下标,结束下标和步长必须是整数,步长决定取的时候怎么取,是一个一个按顺序取还是跳着取。是从前往后取还是从后往前取。

3)使用切片

a.确定切片结果

第一步:先确定结果是否为空,看开始下标对应的位置到结束下标对应的位置的方向和步长的方向是否一致。一致,结果不为空,不一致,结果一定为空。

第二步:如果结果不为空,再确定切片的有效范围,开始下标对应的元素能取到,结束下标对应元素取不到。

第三步:在有效范围内,按照步长的方向和绝对值获取元素。

​ 方向:步长为正,从开始下标到结束下标从前往后取;步长为负就从后往前取

​ 绝对值:绝对值为1,就1个1个的取;绝对值为2,取1个跳过1个再取1个;绝对值为3,取一个跳2个再取1个;。。。

movies = ['肖生克的救赎', '霸王别姬', '阿甘正传', '钢铁侠', '蜘蛛侠', '蝙蝠侠', '蚁人', '雷神', '复仇者联盟']
print(movies[1:-1:1])#['霸王别姬', '阿甘正传', '钢铁侠', '蜘蛛侠', '蝙蝠侠', '蚁人', '雷神']
print(movies[-1:1:-2]) #['复仇者联盟','蚁人','蜘蛛侠','阿甘正传']
print(movies[-2:5:2]) #[]
print(movies[0:-2:4])#['肖生克的救赎','蜘蛛侠']
print(movies[5:-1:2]) #['蝙蝠侠','雷神']
print(movies[6:-6:-1]) #['蚁人','蝙蝠侠','蜘蛛侠']

b.怎么写切片代码获取指定的元素

确定开始下标:需要的结果中第一个数据在列表的下标

确定结束下标:结束下标是结果中最后一项的后一项数据或者前一个数据的下标(看方向)

确定步长:正负看趋势(从前往后取还是从后往前取);再看绝对值(看取的时候是一个一个取的,还是跳着取的)

4)切片省略的写法

a.省略步长:–相当于步长为1

列表[开始下标:结束下标]

b.省略开始下标: --获取元素从头开始取(步长为正,从第一个元素开始;步长为负,从最后一个元素开始)

列表[:结束下标:步长]

print(movies[:-2:2]) # '肖生克的救赎','阿甘正传','蜘蛛侠','蚁人'
print(movies[:2:-2])#'复仇者联盟', '蚁人','蜘蛛侠'
print(movies[:4])#'肖生克的救赎', '霸王别姬', '阿甘正传', '钢铁侠'

c.省略结束下标:-- 获取元素的时候从开始下标开始,取完为止(有可能是取最后一个,也有可能是取第一个)

movies = ['肖生克的救赎', '霸王别姬', '阿甘正传', '钢铁侠', '蜘蛛侠', '蝙蝠侠', '蚁人', '雷神', '复仇者联盟']
print(movies[2::2]) #'阿甘正传','蜘蛛侠', '蚁人', '复仇者联盟'
print(movies[4::-1]) #'蜘蛛侠','钢铁侠','阿甘正传','霸王别姬','肖生克的救赎'
print(movies[3:])#'钢铁侠', '蜘蛛侠', '蝙蝠侠', '蚁人', '雷神', '复仇者联盟'

3.遍历 – 一个一个的获取列表中的所有元素

①直接获取元素:

for 变量 in 列表:
循环体(变量依次获取到的就是列表中的每个元素)

②通过获取所有元素的下标来获取元素:

for 变量 in range(len(列表)):
循环体(列表[变量])

注意:len(列表),–列表长度

③for 变量1,变量2 in enumerate(列表):
循环体 —(变量1依次获取到每个元素对应下标,变量2依次获取的是每个元素)

2.列表的增操作

1)增 --添加元素

①列表.append(元素) --在指定列表的最后添加指定的元素(不会产生新的列表,而是直接在原列表中添加)

heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
heroes.append('剑圣')
print(heroes) #heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女','剑圣']#案例
scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
new_scores = []
for s in scores:if s < 60:new_scores.append(s)
print(new_scores) #[45, 29, 59]# 练习2:将scores中所有不及格的分数改成'补考'
scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
# [89, '补考', 99, 65, 93, 81, '补考', 88, 76, '补考', 66]
list2 = []
for x in scores:if x >= 60:list2.append(x)else:list2.append('补考')
print(list2)

②列表.insert(下标,元素) —将指定元素插入到列表中指定下标对应的元素前

heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
heroes.insert(0,石头人)
print(heroes) # ['石头人','寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']

3.列表的删除元素操作

①del 列表[下标] – 删除列表中指定下标对应的元素

heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
del heroes[1]
print(heroes) #['寒冰射手', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']

②列表.remove(元素) --删除列表中的指定元素

heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
heroes.remove('小炮')
print(heroes) #['寒冰射手', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女']
#若列表中元素不存在会报错,若有多个元素只会删除一个,且只删最前面那个。

③列表.pop(下标) --取出列表中指定下标对应的元素,并且返回

列表.pop() – 取出列表最后一个元素,并且返回

#例题:
heroes = ['寒冰','小炮','小法','维鲁斯'] a = heroes.pop()
print(heroes,a) ##['寒冰', '小炮', '小法'] 维鲁斯

4.列表的改操作

列表[下标] = 新元素 --将列表中指定下标对应的元素改成新元素

# 练习:将scores中所有低于60分的成绩修改成0分(使用改)
scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
for x in range(len(scores)):if scores[x] < 60:scores[x] = 0
print(scores) #[89, 0, 99, 65, 93, 81, 0, 88, 76, 0, 66]#方法2
for index,item in enumerate(scores):if item < 60:scores[index] = 0
print(scores)

3.列表的相关操作

1.列表加法运算

列表1 +列表2 — 将两个列表合并成一个新的列表

A = [10,20,30]
B = [100,200]
C = A + B
print(C)  #[10, 20, 30, 100, 200]

2.列表乘法运算

列表 * N、N * 列表 – 将列表中的元素重复N次产生一个新的列表

B = [100,200]
print(B*3) #[100,200,100,200,100,200]

3.列表比较运算

1.比较是否相等:==、!=

print([10,20,30] ==[10,20,30]) #True

print([10,20,30] ==[10,30,20]) #False

2.比较大小:> 、<、>=、<=

列表1 > 列表2
两个列表比较大小,比较的是第一对不相等的元素的大小(相同位置上的元素是一对)

print([10,20,30]>[1,200,34,532,400]) #True

4.in 和not in

元素 in 列表 --判断列表中是否存在指定的元素

# 练习:已经列表A和B, 打印A和B的公共元素
A = ['后羿', '甄姬', '鲁班7号', '赵云']
B = ['小乔', '孙悟空', '猪八戒', '后羿', '盾山', '赵云']
c = []
for x in A:if x in B:c.append(x)
print(c)

元素 not in 列表 --判断列表中是否不存在指定的元素

4.列表相关的函数(对所有序列有效)

1.sum(数字序列)–求数字序列中所有元素的数值和

2.max 、min

max(序列) —求序列中的最大元素
min(序列) — 求序列中的最小元素

#补充:求最大值的逻辑
#假设第一个元素是最大值保存到变量中,然后依次取出后面的每个元素和保存最大值的变量进行比较,如果后面取出来的值比最大值还大,就更新最大值
scores = [50,98,23,56,88,99,78]
max1 = scores[0]
for x in scores[1:]:if x > max1:max1 = x #更新最大值
print(max1)

3.sorted

sorted(序列) ----将序列中的元素按照从小到大的方式排序,创建一个新的列表并且返回。

sorted(序列,reverse=True) —将序列中的元素按照从大到小的方式排序,创建一个新的列表并且返回。

scores = [50,98,23,56,88,99,78]
result = sorted(scores)
print(result) #[23, 50, 56, 78, 88, 98, 99]

4.len

#len(序列) --统计序列中元素的个数

5.List

#list(系列)  --将指定的序列转换成列表(任何序列都可以转换成列表,转换的时候直接将序列中的元素作为列表的元素)
result = list(range(5))
print(result) #[0, 1, 2, 3, 4]

5.列表相关方法

1.列表.clear() —清空列表

2.列表.count(元素) — 统计列表中指定元素的个数

3.列表.extend(序列) — 将序列中的元素全部添加到列表中

list1 = [10,20]
list1.extend([100,200])
list1.extend('abc')
print(list1) #[10, 20, 100, 200, 'a', 'b', 'c']

4.列表.index(元素) — 获取列表中指定元素对应的下标(返回的是从0开始的下标值)

nums = [10, 20, 100, 20, 'a', 'b', 'c']
#print(nums.index(400)) #报错
print(nums.index(20)) #1
print(nums.index(10)) #0

5.列表.reverse() —将列表倒序

6.列表.sort() —将列表中的元素从小到大排序

列表.sort(reverse = True)—将列表中的元素从大到小排序(直接修改原列表元素的顺序)【sort只针对列表有效】

nums = [10, 20, 100, 20,56]
result = nums.sort()
print(nums) #[10, 20, 20, 56, 100]
print(result) #None

sorted(序列) —将列表中的元素从小到大排序(不修改原序列中元素的顺序,而是创建一个新的列表)

6.拷贝和直接赋值

要求:已知一个列表,现在需要创建和原列表一模一样的新的列表

补充:python中的变量保存数据,实际保存的是数据在内存中的地址。

①直接赋值 --一个变量直接给另外个变量赋值,赋的地址,所以两个变量会一起改变。因为赋值后两个变量指向的是同一块内存

nums = [10,20,30,40]
nums2 =nums
print(nums) #[10, 20, 30, 40]
print(nums2) #[10, 20, 30, 40]

②拷贝-- 一个变量通过拷贝的方式给另外一个变量赋值,赋值的时候会先复制原来变量中的数据,创建一个新的数据,然后将新的数据对应的内存地址给新的变量。

#方法1
nums = [10,20,30,40]
nums3 = nums *1
print(nums3) #[10, 20, 30, 40]
#方法2
nums4 = nums+[]
print(nums4)
#方法3
nums5 = nums[:]
print(nums5)
#方法4
nums6 = nums.copy()
print(nums6)

7.列表推导式

列表推导式的作用:快速创建列表的表达式(代码简洁)

1.结构1

# 语法:
# [表达式 for 变量 in 序列] --让变量去序列中取值,一个一个的取,取完为止。取一个值计算一次表达式的结果,并将计算结果作为列表的一个元素
result = [10 for x in range(5)]
print(result) #[10,10,10,10,10]#案例1 :将nums中所有的元素乘以2
nums = [10,23,89,67]
result = [x*2 for x in nums]
print(result)
#案例2:获取nums中所有元素的个位数
nums = [10,23,89,67]
result = [x % 10 for x in nums]
print(result) #[0,3,9,7]

2.结构2

# 语法:
# [表达式 for 变量 in 序列 if 条件语句]--让变量去序列中取值,一个一个的取,取完为止。每取一个值就去判断条件是否成立,如果成立就计算表达式的值作为列表的元素。不成立就跳过
result = [x*2 for x in range(5) if x % 2 == 0]
print(result) #[0, 4, 8]

8.三目运算符

三目运算符 —运算对象有三个运算符就是三目运算符

# 1. C语言的三目运算符  -  ?:
"""
条件语句?表达式1:表达式2      -   如果条件语句为真整个运算结果是表达式1的结果,否则是表达式2的结果
"""

python的三目运算符

表达式1 if 条件语句 else 表达式2 --先判断条件语句是否成立,如果成立整个运算表达式的结果就是表达式1的值,否则就是表达式2的值

age = 26
result = '成年' if age >= 18 else '未成年'
print(result) #成年

04列表(包含三目运算符)相关推荐

  1. insert 语句的选择列表包含的项多于插入列表中的项_如何定义和使用Python列表(Lists)

    Python中最简单的数据集合是一个列表(list).列表是方括号内用逗号分隔的任何数据项列表.通常,就像使用变量一样,使用=符号为Python列表分配名称. 如果列表中包含数字,则不要在其周围使用引 ...

  2. 返回指定月份的周列表 包含 周序号、开始日期、结束日期(不包含周末)

    /*** 返回当前年月的周列表 包含 周序号.开始日期.结束日期(不包含周末)* @param year 年* @param month 月* @returns {Array} */function ...

  3. 删除列表包含某个字符串的元素java

    删除列表包含某个字符串的元素 package ellip.dt.missionplanning;import java.util.ArrayList; import java.util.Collect ...

  4. java列表包含列表_java – 包含另一个列表的列表

    我的应用程序Customer中有一个对象,其中包含一个客户列表. public class CustomerList { private List } 客户类依次列出他们在一周中的某一天在商店购物的所 ...

  5. Python学习日志04 - 列表

    Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 第04课:Python的容器型数据类型 进入今天的正题 ...

  6. 04 列表的增删改查 常用方法 元祖 range

    主要内容: 1 . 列表   列表[]可以存放不同的数据类型   列表的索引和切片   lst=["大秧歌","赵明杰","赛利亚",&qu ...

  7. Day02-3 常用标签04 列表

    目录 有序列表 无序列表 数据列表 作业(涉及鼠标样式.悬浮变大.块级标签该行级标签) 有序列表 <!-- 有序列表通过 type属性进⾏ 列表序号的设置 有 1,a,A ,i,I --> ...

  8. POI导出消息列表(包含图片)

    s导出消 消息1对应发送的学生列表 消息2对应发送的学生列表 消息3对应发送的学生列表 ... 消息n对应发送的学生列表 Map<String, List<Map<String, O ...

  9. linux C 列出目录中的文件列表 包含文件的相关信息

    当前目录下 任意指定目录 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <sys/types.h> 4 ...

最新文章

  1. #Ruby# Introspect (2)
  2. 很棒的在线裁图工具jQuery1.4.2 + jquery.bitmapcutter.js + BitmapCutter.Core+的完美配合
  3. Linux之grep
  4. 【UVA1378】A Funny Stone Game (博弈-求SG值-输出方案)
  5. Jackson动态处理返回字段
  6. python3 应用 nose_parameterized 实现unittest 参数化
  7. 简单封装kafka相关的api
  8. centos安装virtualbox
  9. 基础层区块链Harmony发布主网新版本v4.0.0
  10. vbs连接oracle11,vbs连oracle数据库
  11. Linux上mysql安装详细教程
  12. 淘宝无线端一键直达微博自助生成工具
  13. 主控域NTP时间同步(PTP时钟同步服务器)配置方法
  14. android 高德地图poi搜索周边
  15. LaTeX报错解决办法:arithmetic: number too big ! Dimension too large.
  16. win10升级后蓝牙不见了,设备管理器里没有,多了个串行控制器里的未知USB设备?...
  17. 递归与非递归实现走迷宫算法
  18. 速营社团队分享互联网发展过程那些疯狂的时代
  19. java线程池售票_Java多线程卖票例子
  20. 认识Linux瘦客户机

热门文章

  1. 有没有html代码听力的软件吗,听.html
  2. solidcam2020 sp3(CAM加工软件) 附安装教程
  3. MySQL 表关系及多表操作(联合查询、连接查询、子查询)
  4. 20189218 2018-2019-2 《密码与安全新技术专题》第3周作业
  5. IT经理技能博而专?(18000字)
  6. lol6月五日服务器维护,英雄联盟维护的时间是几点结束 6月11日LOL更新维护多久最新公告...
  7. 在Google工作的500天 | 周末加班? 文化冲击? Minority群体?
  8. 延禧攻略:她是最懦弱的妃子,却为乾隆生下大清最出名的皇子!
  9. 黑客的胜利——读《增长黑客》有感
  10. 安卓模拟器bluestacks mac地址修改教程