目录
一、列表的概念
1、列表的所有元素放在一对方括号中,相邻元素之间使用逗号分隔
2、同一个列表中元素的数据类型可以各不相同,可以同时包含整数、实数、复数、字符串等基本类型的元素,也可以包含列表、元组、字典、集合、函数或其他任意对象
3、 一对空的方括号表示空列表
二、创建列表
1、方括号直接创建
2、通过list()函数把元组、range对象、字符串、字典、集合及map对象、zip对象、enumerate对象或其他类似对象转换为列表
3、通过内置函数、标准库函数或扩展库函数来返回列表,例如:内置函数sorted()、标准库函数random.sample()、扩展库函数jieba.lcut()
>>> list((3, 5, 7, 9, 11)) # 将元组转换为列表
>>> list(range(1, 10, 2)) # 将range对象转换为列表
>>> list(map(str, range(10))) # 将map对象转换为列表
>>> list(zip('abcd', [1,2,3,4])) # 将zip对象转换为列表
>>> list(enumerate('Python')) # 将enumerate对象转换为列表
>>> list(filter(str.isdigit, 'a1b2c3d456')) # 将filter对象转换为列表
>>> list('hello world') # 将字符串转换为列表,每个字符转换为列中的一个元素
>>> list({3, 7, 5}) # 将集合转换为列表,集合中的元素是无序的
>>> x = list() # 创建空列表
>>> x=[1,2,3]
>>> del x # 删除列表对象
>>> x # 对象删除后无法再访问,抛出异常
三、访问列表
1、列表、元组和字符串都属于有序序列,其中元素有严格的先后顺序,用户可以使用整数作为下标来随机访问其中任意位置上的元素
2、列表、元组和字符串都支持双向索引
(1)有效索引范围为[-L,L-1],其中L表示列表、元组或字符串的长度
(2)正向索引:0表示第1个元素,1表示第2个元素,以此类推
(3)反向索引:-1表示最后1个元素,-2表示倒数第2个元素,以此类推
(4)超出有效范围时,代码会抛出异常提示下标越界
data = list(range(10))
print(data)
print(data[0]) # 第一个元素的下标为0
print(data[1]) # 第二个元素的下标为1
print(data[-1]) # -1表示最后一个元素的下标
print(data[15]) # 15不是有效下标,代码抛出异常
四、切片操作
1、概念
(1)用来获取列表、元组、字符串等有序序列中部分元素的一种语法
(2)格式:2个冒号分隔的3个数字组成,[start:end:step]
①第一个数字start:切片开始位置(默认0)
②第二个数字end:切片截止(但不包含)位置(默认为列表长度)
③第三个数字step:步长(默认1),省略步长时,还可以同时省略第二个冒号
(3)step为负整数时,表示反向切片,start从后往前到end
2、功能
(1)适用于列表、元组、字符串和range对象
data = list(range(20))
print(data[:]) # 获取所有元素的副本
print(data[:3]) # 前三个元素
print(data[3:]) # 下标3之后的所有元素
print(data[::3]) # 每3个元素选取1个
print(data[-3:]) # 最后3个元素
print(data[:-5]) # 除最后5个元素之外的所有元素
(2)作用于列表时(列表的强大功能,不建议初学者过多使用,因此这里就没有拓展实例啦)
①可以截取列表的任何部分,并返回得到一个新列表
②增、删、改列表中的部分元素
五、列表的遍历
1、列表是一个可迭代对象
2、可以通过for循环遍历元素
list_one = ['章萍', '李昊', '武田', '李彪']
for i in list_one:
print(f"嗨,{i}!今日促销,赶快来抢购吧!")
六、列表的排序
1、sort()方法
(1)能够对列表元素排序,与内置函数sorted()一样支持key参数和reverse参数
(2)格式:sort(key=None, reverse=False)
参数如下:key -- 指定的排序规则,reverse -- 控制列表元素排序的方式
2、sorted()方法
(1)可以按升序方式排列列表元素,该方法的返回值是升序排列后的新列表
(2)代码例子
li_one = [4, 3, 2, 1]
li_two = sorted(li_one)
print(li_one) # 原列表
print(li_two) # 排序后列表
3、reverse()方法
(1)用于将列表中的元素倒序排列,即把原列表中的元素从右至左依次排列存放
(2)代码例子
li_one = ['a', 'b', 'c', 'd']
li_one.reverse()
print(li_one)
七、列表元素的增、删、改
1、添加列表元素
(1)append()方法:在列表末尾添加新的元素
list_one = [1, 2, 3, 4]
list_one.append(5)
print(list_one)
(2) extend()方法:在列表末尾一次性添加另一个列表中的所有元素,即使用新列表扩展原来的列表
list_str = ['a', 'b', 'c']
list_num = [1, 2, 3]
list_str.extend(list_num)
print(list_str)
(3)insert()方法:将元素插入列表的指定位置
names = ['baby', 'Lucy', 'Alise']
names.insert(2, 'Peter')
print(names)
2、删除列表元素
(1)del语句:删除列表中指定位置的元素
names = ['baby', 'Lucy', 'Alise']
del names[0]
print(names)
(2)remove()方法:移除列表中的某个元素,若列表中有多个匹配的元素,只会移除匹配到的第一个元素
chars = ['h', 'e', 'l', 'l', 'e']
chars.remove('e')
print(chars)
(3)pop()方法:移除列表中的某个元素,如果不指定具体元素,那么移除列表中的最后一个元素
numbers = [1, 2, 3, 4, 5]
numbers.pop() # 移除最后一个元素
numbers.pop(1) # 移除索引为1的元素
print(numbers)
3、修改列表元素
(1)通过索引获取元素并对该元素重新赋值
(2)代码例子
names = ['baby', 'Lucy', 'Alise']
# 将索引为0的元素'baby'重新赋值为'Harry'
names[0] = 'Harry'
print(names)
八、实例——刮刮乐
1、假设现在有一张刮刮乐,该卡片上面共有8个刮奖区,每个刮奖区对应的兑奖信息分别为“谢谢惠顾”、 “一等奖”、“二等奖”、“三等奖”中任意一个,大家只能刮开其中一个区域
2、代码例子
#刮刮乐
import random#使用乱序
reward =['谢谢惠顾','谢谢惠顾','谢谢惠顾','谢谢惠顾','谢谢惠顾','一等奖','二等奖','三等奖']
random.shuffle(reward)
print(reward)
num = int(input('输入刮去位置(1-8):'))
if 1 <=num<= 8:
result = reward[num - 1]
print (result)
else:
print("输入有误! ")
3、代码效果