Python基础语法【列表】

一.认识列表

1.什么是列表(list)

1)列表是python提供的容器型数据类型;将[]作为容器的标志,里面多个元素用逗号隔开:[数据1,数据2,…]

[数据1,数据2,....]

2)列表是可变的(元素的个数和值可以变化);列表是有序的(支持下标操作);
3)元素:任何类型的数据都可以放入作为列表的元素;

4)说明:
a.容器类型数据——可以同时保存多个数据
b.元素——容器中每个独立的数据

2.空列表

list1 = []

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

a.一个列表中的元素可以是多个不同类型的数据

list2 = [10, 20, 30]

b.一个列表元素可以是多个不同类型的数据

list3 = [11, 3.4567, "abc", None, True]

c.列表中的元素也可以是列表

list4 = [10, [20, 30]]       # 这个列表的长度为2

4.列表是有序的

print([10, 20, 30] == [30, 20, 10])  # False
print({10, 20, 30} == {30, 20, 10}) # True(集合是无序的,顺序不影响结果)

二.列表的增删改查

1.查 ——获取列表元素

1.查单个 ——一次 获取列表中的某一个元素

1)语法:列表[索引] —— 获取列表中指定下标对应的元素
2)说明:
a.列表 —— 需要获取元素的列表对象(可以是保存一个列表的变量,也可以是具体的列表数据)
b.[] —— 固定写法
c.下标 —— 又叫索引;列表的下标指的是列表中的元素在列表中的位置信息。
第一种下标(通用的):元素从前往后对应的下标从0开始一次增加
第二种下标:元素从后往前对应的下标从-1开始依次减少
3)注意:下标不能越界

num =[10, 20, 30]
print(num[-1])
print(num[2])
# print(num[3])  # 报错index
heros = ['小乔', '大乔', '后羿', '鲁班七号', '女警', '安琪拉']
print(heros[2])
print(heros[-4])

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

1).完整语法:
列表[开始下标:结束下标;步长]
2).
a.说明:
列表 —— 需要获取元素的列表
【】 —— 固定写法
开始下标、结束下标、步长 —— 必须是整数
开始下标 —— 决定从哪开始取
结束下标 —— 决定取到哪儿结束
步长 —— 决定取的时候怎么取(是一个一个的按顺序取,还是跳着取,是从前往后取(步长为正)还是从后往前取(步长为负))

3).使用切片
a.确定切片结果
第一步:先确定结果是否为空,看开始下标对应的位置到结束下标的位置和步长方向的位置是否一致;[一致结果不为空,不一致结果一定为空。]
第二步:如果结果不为空,再确定切片的有效范围,开始下标对应的元素能取到,结束下标对应元素取不到;
第三步:在有效范围内,按照步长的方向和绝对值获取元素。
方向:步长为正,从开始下标到结束下标从前往后取;步长为负就从后往前取。
绝对值:绝对值为1,就一个一个取;绝对值为2,取一个跳一个再取一个;绝对值为3,取一个跳两个再取一个…

b. 怎么写切片代码获取指定元素
第一步:确定开始下标,需要的结果中第一个数据在列表的下标
第二步:确定结束下标,结束下标是结果 中最后一项的后一个数据或者前一个数据的下标(看方向)
第三步:确定步长,正负看趋势(从前往后取还是从后往前取);再看绝对值(看取的时候是一个一个的取的,还是跳着取的)

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

4).切片省略的写法

完整的切片语法:列表[开始下标:结束下标:步长]
a.省略步长  ——  相当于步长为1(正的)
列表[开始下标:结束下标]
b.省略开始下标  ——  获取元素的从头开始取(步长为正,从第一个元素开始;步长为负,从最后一个元素开始)
列表[:结束下标:步长]
c.省略结束下标  ——获取元素时候从开始下标开始,取完为止(有可能是取到最后一个,也可以取到第一个)
列表[开始下标::步长]
movies = ['肖生克的救赎', '霸王别姬', '阿甘正传', '钢铁侠', '蜘蛛侠', '蝙蝠侠', '蚁人', '雷神', '复仇者联盟']
print(movies[1:4])  # ['霸王别姬','阿甘正传', '钢铁侠']
print(movies[-1:1])  # []print(movies[:-2:2])  # ['肖生克的救赎',  '阿甘正传', ' '蜘蛛侠',  '蚁人']
print(movies[:2:-2])  # ['复仇者联盟','蚁人','蜘蛛侠']
print(movies[:4])  # ['肖生克的救赎', '霸王别姬', '阿甘正传', '钢铁侠']print(movies[2::2])  # ['阿甘正传','蜘蛛侠','蚁人', '复仇者联盟']
print(movies[4::-1])  # ['蜘蛛侠','钢铁侠','阿甘正传','霸王别姬','肖生克的救赎', ]
print(movies[3:])  # ['钢铁侠', '蜘蛛侠', '蝙蝠侠', '蚁人', '雷神', '复仇者联盟']

3.遍历 —— 一个一个的获取列表中的每个元素

1)语法1:直接获取元素

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

2)语法2:通过获取所有元素的下标来获取元素

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

3)

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

4)补充:len(列表) —— 获取列表中元素的个数(获取列表的长度)

for x in num:print(x)
for x in heros:print(x)

5)案例:统计scores中不及格分数的个数

scores = [90, 34, 79, 99, 100, 77, 56, 67, 55]
count = 0
for x in scores:if x < 60:count += 1
print(count)

2.改 ——修改元素的值

1)语法:列表[下标] = 新值 ——修改列表中指定下标对应的元素为指定的新值

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

2)案例:将所有的scores中所有不及格的分数改成”重修“,scores = [90, 34, 79, 99, 100, 77, 56, 67, 55]。

scores = [90, 34, 79, 99, 100, 77, 56, 67, 55]
for index in range(len(scores)):s = scores[index]if s < 60:scores[index] = "重修"
print(scores)

3.增 —— 添加元素

1)列表.append(元素) —— 在指定列表的最后添加指定的元素

heroes = ['王昭君', '猪八戒', '孙悟空', '后羿', '鲁班7号', '小炮', '女警', '小法', '流浪法师', '蛇女']
print(heros)
heros.append("赵云")
print(heros)

a.案例:提取scores中所有不及格的分数,产生一个新列表

scores = [90, 34, 79, 99, 100, 77, 56, 67, 55]
new_scores = []
for x in scores:if x < 60:new_scores.append(x)
print(new_scores)

b.练习2:将scores中所有不及格的分数改成’补考’

scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
#[89, '补考', 99, 65, 93, 81, '补考', 88, 76, '补考', 66]
new_scores = []
for x in scores:if x < 60:new_scores.append("补考")else:new_scores.append(x)
print(new_scores)

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

heroes = ['王昭君', '猪八戒', '孙悟空', '后羿', '鲁班7号']
heroes.insert(1, "赵云")
print(heroes)
heroes.insert(3, "小乔")
print(heroes)

4.删——删除元素

1)del 列表[下标] —— 删除列表中指定下标对应的元素

heroes = ['王昭君', '猪八戒', '孙悟空', '后羿', '鲁班7号']
del heroes[0]
print(heroes)

2)列表.remove(元素) ——删除列表中的第一个指定元素

heroes = ['王昭君', '猪八戒', '孙悟空', '王昭君','后羿', '鲁班7号']
heroes.remove("王昭君")
print(heroes)

3)

a.列表.pop() —— 取出列表中的最后一个元素,并且返回(pop操作的结果是从列表中取走的数据)

b.列表.pop(下标) —— 取出列表中指定下标元素

c.注意:pop虽然删除了列表里面的元素,但是内存里面还有。

heroes = ['王昭君', '猪八戒', '孙悟空', '王昭君','后羿', '鲁班7号']
result1 = heroes.pop()
print(heroes, result1)
result2 = heroes.pop(0)
print(heroes, result2)
 #练习:将scores中所有低于60分的成绩修改成0分(使用改)
# 方法1:
scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
for index in range(len(scores)):s = scores[index]if s < 60:scores[index] = 0
print(scores)# 方法2:
for x, y in enumerate(scores):if y < 60:scores[x] = 0
print(scores)

三.列表的相关操作

1.列表加法运算

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

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

2.列表乘法运算

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

C = A * 2
print(C)  # [10, 20, 30, 10, 20, 30]
print(B * 3)  # [100, 200, 100, 200, 100, 200]
print(["小明", "小花"] * 3)  # ['小明', '小花', '小明', '小花', '小明', '小花']

3.in和not in

1)数据 in 列表 —— 判断指定数据是否是列表中的元素

2)数据 not in 列表 —— 判断指定数据是否不是列表中的元素

A = [10, [20, 30]]
print(10 in A)  # True
print(20 in A)  # False
print(10 in [10, 20, 30])  # True
print(10 in [10, 20], 30)  # False
print([10, 20] in [10, 20, 30])  # False# 练习:已知列表A和B,打印A和B的公共元素
A = ['后羿', "甄姬", "鲁班7号", "赵云"]
B = ["小乔", '孙悟空', '猪八戒', '后羿', "盾山", '赵云']
C = []
for x in A:for y in B:if x == y:C.append(x)
print(C)
# 方法2
for x in A:if x in B:print(x)

4.列表比较运算

  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, 100, 200, 400])  # True
print([10, 20, 30] > [10, 2, 34, 56, 100])  # True

四.列表相关函数:sum,max,min,sorted

1)sum(列表) —— 求列表中所有元素的和(列表中的元素必须全部是数字)

A = [10, 20, 30]
print(sum(A))  # 60

2)a. max(列表) —— 列表的最大元素

​ b. min(列表) —— 列表的最小元素

A = [60, 20, 30]
print(max(A))
print(min(A))

3)a. sorted(列表) —— 将列表中的元素从小到大排序产生一个新的列表

​ b. sorted(列表,reverse = True) ——将列表中的元素从大到小排序,产生一个新列表

new_A = sorted(A)
print(new_A) # [20, 30, 60]
new_A = sorted(A, reverse=True)
print(new_A) # [60, 30, 20]

4). len(序列) —— 统计序列中元素的个数

print(len(scores))  # 7
print(len("123abd"))  # 6
print(len(range(1, 100, 2)))  # 50

5). list(序列) —— 将指定的序列转换成列表(任何序列都可以转换成列表,转换的时候直接将序列中元素作为列表的元素)

name = "你真棒"
print(list(name))  # ['你', '真', '棒']result = list(range(5))
print(result)  # [0, 1, 2, 3, 4]

五.列表相关方法 —列表.xxx()

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

nums = [10, 9, 89, 23]
print(nums)  # [10, 9, 89, 23]nums.clear()
print(nums)  # []

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

nums = [10, 9, 89, 23, 10, 9, 9]
print(nums.count(10))  # 2
print(nums.count(9))  # 3

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

list1 = [10, 20]
list1.extend([100, 200])
print(list1)  # [10, 20, 100, 200]list1.extend("abc")
print(list1)  # [10, 20, 100, 200, 'a', 'b', 'c']list1.extend(range(5))
print(list1)  # [10, 20, 100, 200, 'a', 'b', 'c', 0, 1, 2, 3, 4]

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

nums = [10, 9, 89, 23, 10]
print(nums.index(89))  # 2
print(nums.index(10))  # 0 返回的是最前面的
#print(nums.index(100))  #ValueError: 100 is not in list

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

nums = [10, 9, 89, 23, 10, 99]
nums.reverse()
print(nums)  # [99, 10, 23, 89, 9, 10]

6.列表.sort()
1) 列表.sort() —— 将列表中的元素从小到大排序(直接修改原列表元素的顺序)
2)列表.sort(reverse=True) —— 将列表中的元素从大到小排序
注意:sort没有结果,只是交换列表中的排序顺序,不会保留原来的顺序。

nums = [10, 9, 89, 23, 10, 99]
print(nums.sort())  # None
print(nums)  # [9, 10, 10, 23, 89, 99]

3)sorted(序列) —— 将列表中的元素从小到大排序(不修改原序列中元素的顺序,而是创建一个新的列表)
注意:创建一个新列表再排序,会保存原来的数据,如果后面操作还需要使用原来的数据,就适合使用sorted

nums = [10, 9, 89, 23, 10, 99]
result = sorted(nums)
print(nums)  # [10, 9, 89, 23, 10, 99]
print(result)  # [9, 10, 10, 23, 89, 99]

六.列表赋值问题

补充:python中的变量保存数据,其实保存的数据在内存中的地址(python的变量全部都是指针变量 )

1.拷贝和直接赋值

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

nums = [10, 20, 30, 40]
# 1) 直接赋值 —— 一个变量直接给另外一个变量赋值,赋的是地址,赋值后两个变量指向的是同一块内存。(增删改会影响数据)
nums2 = nums
print("nums:", nums)
print("nums2:", nums2)
# 2)  拷贝 —— 一个变量通过拷贝的方式给另外一个变量赋值,赋值的时候会先复制原来变量中的数据,创建一个新的数据,然后将新的数据对应的内存地址给新的变量。(先把拷贝对象复制一份保存在新的地址,不会相互影响)
nums3 = nums * 1
print("nums3:", nums3)nums4 = nums + []
print("nums4:", nums4)nums5 = nums[:]
print("nums5:", nums5)nums6 = nums.copy()
print("nums6:", nums6)print("__________________________华丽的分割线_________________________")nums.append(100)
print(nums)  # [10, 20, 30, 40, 100]
print(nums2)  # [10, 20, 30, 40, 100]
print(nums3)  # [10, 20, 30, 40]
print(nums4)  # [10, 20, 30, 40]
print(nums5)  # [10, 20, 30, 40]
print(nums6)  # [10, 20, 30, 40]

七.列表推导式—快速创建列表的表达式(代码简洁)

1.列表推导式结构1

1)语法:
[表达式 for 变量 in 序列]2)让变量去序列中取值,一个一个取,取完为止,每取一个值就计算一次表达式的结果,并且将计算结果作为列表的一个元素result = [10 for x in range(5)]
print(result)  # [10, 10, 10, 10, 10]
result = [x * 2 for x in range(5)]
print(result)  # [0, 2, 4, 6, 8]

3)案例1:将nums中所有的元素乘以2

nums = [10, 23, 89, 67]
result = [x * 2 for x in nums]
print(result)  # [20, 46, 178, 134]

4)案例2:获取nums中所有元素的个位数

nums = [103, 230, 89, 67]
result = [x % 10 for x in nums]
print(result)  # [3, 0, 9, 7]

2.列表推导式结构2

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

3) 案例1:删除scores中所有不及格的分数

scores = [80, 99, 23, 67, 56, 82, 76, 45]
result = [x for x in scores if x >= 60]
print(result)  # [80, 99, 67, 82, 76]

4)案例2:提取nums中所有奇数的个位数 (只用管元素与元素的关系)

nums = [103, 230, 89, 67]
result = [x % 10 for x in nums if x % 2 != 0]
print(result)  # [3, 9, 7]

Python基础语法【列表】相关推荐

  1. python:python基础语法三,列表、元组、字典、集合

    python基础语法 文章目录 python基础语法 列表(list) 列表简介 切片 列表修改元素 列表的方法 遍历列表 序列(sequence) 序列的基本操作 range()函数 EMS(Emp ...

  2. Python基础语法day02字符串详解和列表

    今天是python基础语法入门第二天,大概总共会有四天左右.四天后就是对于python的numpy库的详细文章.那话不多说,我们开始. 目录 字符串详解 字符串独有功能 检测头尾字符 判断输入结果是否 ...

  3. python基础语法(二)列表

    往期推荐: python基础语法(一)range函数 python基础语法(二)列表 前言 一.列表的创建与删除 二.列表的查询操作 1. 获取列表中指定元素的索引 2. 获取列表中的单个元素 3. ...

  4. 从列表中切片最佳英雄组合,我的选择是亚索和李青——补充python基础语法有关数字类型和列表的知识

    本文继续补充个人对python基础语法的理解,这里主要讲数字类型和列表~ 目前还不算初级程序员把,但是一洗头就掉头发,现在都不敢洗头了~ 数字类型 python中的数字类型:int(整型).float ...

  5. Python基础语法学习笔记

    Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...

  6. 吾八哥学Python(四):了解Python基础语法(下)

    咱们接着上篇的语法学习,继续了解学习Python基础语法. 数据类型 大体上把Python中的数据类型分为如下几类:Number(数字),String(字符串).List(列表).Dictionary ...

  7. python语法基础学习-Python基础语法精心总结!看完都知道的可以往下继续学习了...

    原标题:Python基础语法精心总结!看完都知道的可以往下继续学习了 这应该是最详细的Python入门基础语法总结! 定义变量,使用变量 1. input 用户自己输入值 2. print 打印值 可 ...

  8. python变量类型-【干货】Python基础语法之变量类型

    原标题:[干货]Python基础语法之变量类型 还没关注? 01 Python编码 Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错. 解决 ...

  9. python基础语法有哪些-Python基础语法知识有哪些?

    相信大家都听过Python除了不会生孩子,基本上无所不能的段子,这一定程度上反映了目前Python编程语言的火爆程度和广泛应用.然而,对于许多零基础的Python学习者来说,常常会遇到无从学起,找不到 ...

最新文章

  1. Java怎么定义图片公共路径_【Java】springboot配置图片访问路径
  2. (C++)1020 月饼 简单贪心
  3. vue修饰符 .lazy .number .trim
  4. 推荐一款免费的数据库管理工具,比 Navicat 还要好用,功能还很强大
  5. 改变Error tip的背景色.
  6. python杂记(一)
  7. 用户画像|产品经理应该如何定位用户
  8. ENVI5.4完美实现MODIS NDVI数据格式转换和投影变换
  9. httpd 分页_更改 Apache httpd.conf 配置文件
  10. 基于jsp+Spring boot+mybatis的图书管理系统设计和实现
  11. 【过拟合】防止模型过拟合的必备方法!
  12. js中addEventLister()函数的用法
  13. lnmp无法删除.user.ini文件的解决办法
  14. excel二进制移位运算_Excel定位神技能Ctrl+G,10种不可绕开的操作技巧
  15. android12.0(S) 从SD卡导入vCard文件到通讯录 号码带“-“ 如何把横线去除
  16. 前端框架UMI3基础知识和快速上手
  17. 如何使用 CSS flex box 和 Javascript 设计棋盘
  18. 最老程序员创业开发实训12---Android---在MVC架构下Activity设计及实现
  19. 世界500强名称中英对照1-100名单
  20. 超级工程落户山东,用清洁能源解决30万人用电

热门文章

  1. python open a_python中使用open()函数打开指定文件
  2. JQuery-jq属性操作、jq文本属性值、jq元素(创建、添加、移除)操作、jq尺寸、位置操作
  3. 学习笔记:谷歌浏览器开发者模式的使用
  4. 南邮CTF平台WEB题writeup
  5. 200 SMART PLC回原方法汇总(脉冲轴)
  6. Bugku 想蹭网先解开密码【MISC】
  7. React中setState方法详解
  8. JS压缩图片并转换base64
  9. B - 改革春风吹满地
  10. php将一个数组转成字符串,php怎样将数组转化成字符串