今天教教大家怎样使用Python中的列表及功能,你准备好了吗?
首先,列表中的方法与上一篇介绍的字符串操作诸多相似。
变量名 = [数据1,数据2,数据3......]
"""
1. 列表类型以 [] 包含起来
2. 列表中的元素以 ',' 分割
3. 列表中的元素数据类型没有限制
"""
# 举例
list1 = ['张三','李一','赵四',18,True] # 可以是字符串类型,int类型,布尔类型。
list1 = ['张三','李一','赵四',18,True]
print(list1[0]) # 结果为 张三
print(list1[2]) # 结果为 赵四
print(list1[4]) # 结果为 True
列表序列.index(数据,开始位置下标,结束位置下标)
list1 = ['张三','李一','赵四',18,True]
print(list1.index('张三')) # 结果为 0
print(list1.index(18)) # 结果为 3
print(list1.index('123')) # 结果为 报错
list1 = ['张三','李一','赵四',18,True]
print(list1.count('张三')) # 结果为 1
print(list1.count('abc')) # 结果为 0
list1 = ['张三','李一','赵四',18,True]
print(len(list1)) # 结果为 5
list1 = ['张三','李一','赵四',18,True]
print('赵四' in list1) # 结果为 True
print('abc' in list1) # 结果为 False
list1 = ['张三','李一','赵四',18,True]
print('赵四' not in list1) # 结果为 False
print('abc' not in list1) # 结果为 True
列表序列.append(数据)
list1 = ['张三','李一','赵四',18,True]
list1.append(False)
# 结果为 ['张三', '李一', '赵四', 18, True, False]
print(list1)
# 列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,所以里列表是可变数据类型
# 如果追加的数据是一个序列,则追加整个序列列表
list1 = ['张三','李一','赵四',18,True]
list1.append(['张飞','刘备','关羽'])
# 结果为 ['张三', '李一', '赵四', 18, True, ['张飞', '刘备', '关羽']]
print(list1)
列表序列.extend(数据)
# 添加序列数据
list1 = ['张三','李一','赵四',18,True]
list1.extend(['张飞','刘备','关羽'])
# 结果为 ['张三', '李一', '赵四', 18, True, '张飞', '刘备', '关羽']
print(list1)
# 添加单个数据
list1 = ['张三','李一','赵四',18,True]
list1.extend('诸葛亮')
# 结果为 ['张三', '李一', '赵四', 18, True, '诸', '葛', '亮']
print(list1)
列表序列.insert(位置下标,数据)
list1 = ['张三','李一','赵四',18,True]
list1.insert(2,'诸葛亮')
# 结果为 ['张三', '李一', '诸葛亮', '赵四', 18, True]
print(list1)
del 目标
# 删除列表
list1 = ['张三','李一','赵四',18,True]
del list1
# 因为del是直接将列表删除掉了,所以如果再输出列表 结果为 报错
print(list1)
# 删除指定数据
list1 = ['张三','李一','赵四',18,True]
del list1[0]
# 结果为 ['李一', '赵四', 18, True]
print(list1)
列表序列.pop(下标)
list1 = ['张三','李一','赵四',18,True]
print(list1.pop(1)) # 结果为 李一
# 结果为 ['张三', '赵四', 18, True]
print(list1)
列表序列.remove(数据)
list1 = ['张三','李一','赵四','李一',18,True]
list1.remove('李一')
# 结果为 ['张三', '赵四', '李一', 18, True]
print(list1)
list1 = ['张三','李一','赵四','李一',18,True]
list1.clear()
print(list1) # 结果为 []
list1 = ['张三','李一','赵四',18,True]
list1[0] = '老王'
print(list1) # 结果为 ['老王', '李一', '赵四', 18, True]
list1 = ['张三','李一','赵四',18,True]
list1.reverse()
print(list1) # 结果为 [True, 18, '赵四', '李一', '张三']
列表序列.sort(key=None,reverse=False)
# 注意: reverse 表示排序规则, reverse = True 降序,reverse = False 升序(默认)
# 升序(默认)
list1 = [5,1,11,20,6,33]
list1.sort()
print(list1) # 结果为 [1, 5, 6, 11, 20, 33]
# 降序
list1 = [5,1,11,20,6,33]
list1.sort(reverse=True)
print(list1) # 结果为 [33, 20, 11, 6, 5, 1]
list1 = [5,1,11,20,6,33]
list2 = list1.copy()
print(list2) # 结果为 [5, 1, 11, 20, 6, 33]
说明:依次打印列表中的各个数据。
# 遍历列表
names = ['张三','李一','赵四','唐僧','诸葛亮','佛祖']
"""
print(f'当前学生的姓名是{names[0]}') # 结果为 当前学生的姓名是张三
print(f'当前学生的姓名是{names[1]}') # 结果为 当前学生的姓名是李一
print(f'当前学生的姓名是{names[2]}') # 结果为 当前学生的姓名是赵四
发现上面的代码除了下标不一样之外,其他的都一样
应该考虑简化代码
使用循环
"""
# while 循环
i = 0
while i < len(names):
print(f'当前学生的姓名是{names[i]}')
i += 1
"""
运行结果为
当前学生的姓名是张三
当前学生的姓名是李一
当前学生的姓名是赵四
当前学生的姓名是唐僧
当前学生的姓名是诸葛亮
当前学生的姓名是佛祖
"""
# for 循环
for item in names:
print(f'当前学生的姓名是{item}')
"""
运行结果为
当前学生的姓名是张三
当前学生的姓名是李一
当前学生的姓名是赵四
当前学生的姓名是唐僧
当前学生的姓名是诸葛亮
当前学生的姓名是佛祖
"""
"""
将列表中的每个元素乘以2
思考: 为什么 for 循环中无法修改列表中元素的值,而 while 循环中就可以
"""
numbers = [2,10,20,5,66]
for item in numbers:
item *= 2
print(numbers) # 结果为 [2,10,20,5,66]
"""
解答: 从以上代码可以了解到 for 循环中把 numbers 列表中的值每次赋值给了 item 变量,虽然 item 变量 每次乘以2,
可是它并没有每次将得出的值直接添加到原先的列表中,所以原列表并没有改变。
"""
i = 0
while i < len(numbers):
numbers[i] *= 2
i += 1
print(numbers) # 结果为 [4, 20, 40, 10, 132]
"""
解答: 从以上代码可以看到 while 循环中的 i 是指列表中数据的下标,而里面的语句 numbers[i] *=2 ,
根据我们所学的知识,了解到是可以直接指定小标修改列表中的数据,
那么可以得出它是通过下标直接修改了原列表中的值,所以原列表改变。
"""
说明 : 列表嵌套指的是一个列表里面包含了其他的子列表。
list1 = [['小明','小红','小王'],['老王','老张','老李'],[1,2,3]]
# 如何找到老王?
# 第一步,按下标先找到老王所在的列表
print(list1[1]) # 结果为 ['老王', '老张', '老李']
# 第二步,接着在老王所在的列表中通过下标找到数据老王,就表示成功找到
print(list1[1][0]) # 结果为老王
names = []
names.extend(['Lihua','Rain','Jack','Xiuxiu','Peiqi','Black'])
print(names)
# 结果为 ['Lihua', 'Rain', 'Jack', 'Xiuxiu', 'Peiqi', 'Black']
names.insert(5,'Blue')
print(names)
# 结果为 ['Lihua', 'Rain', 'Jack', 'Xiuxiu', 'Peiqi', 'Blue', 'Black']
names[3] = '羞羞'
print(names)
# 结果为 ['Lihua', 'Rain', 'Jack', '羞羞', 'Peiqi', 'Blue', 'Black']
names.insert(2,['oldboy','oldgirl'])
print(names)
# 结果为 ['Lihua', 'Rain', ['oldboy', 'oldgirl'], 'Jack', '羞羞', 'Peiqi', 'Blue', 'Black']
print(names.index('Peiqi')) # 结果为 5
list1 = [1,2,3,4,2,5,6,2]
names.extend(list1)
print(names)
# 结果为 ['Lihua', 'Rain', ['oldboy', 'oldgirl'], 'Jack', '羞羞', 'Peiqi', 'Blue', 'Black', 1, 2, 3, 4, 2, 5, 6, 2]
names = ['Lihua','Rain','Jack','Xiuxiu','Peiqi','Black']
for i in names:
print(names.index(i),i)
"""
结果为
0 Lihua
1 Rain
2 Jack
3 Xiuxiu
4 Peiqi
5 Black
"""
for i in names:
index = names.index(i)
if index % 2 == 0:
names[index] = -1
print(index,i)
print(names)
"""
结果为
0 Lihua
2 Jack
4 Peiqi
[-1, 'Rain', -1, 'Xiuxiu', -1, 'Black']
"""
names = [1,2,3,4,2,5,6,2]
print(names.index(2,names.index(2)+1)) # 结果为 4
products = [["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
for i in products:
print(f'手机:{i[0]},价格:{i[1]}')
"""
结果为
手机:iphone,价格:6888
手机:MacPro,价格:14800
手机:小米6,价格:2499
手机:Coffee,价格:31
手机:Book,价格:60
手机:Nike,价格:699
"""
spring = [3,4,5]
summer = [6,7,8]
autumn = [9,10,11]
winter = [12,1,2]
number = int(input('输入月份:'))
if number in spring:
print('春季')
elif number in summer:
print('夏季')
elif number in autumn:
print('秋季')
else:
print('冬季')
# 运行结果:
输入月份:6
夏季
输入月份:1
冬季
输入月份:3
春季
输入月份:11
秋季
.....
"""
1、系统里面有多个用户,用户的信息目前保存在列表里面
users = [‘root’,‘westos’]
passwd = [‘123’,‘456’]
2、用户登陆(判断用户登陆是否成功)
1).判断用户是否存在
2).如果存在
3).判断用户密码是否正确
如果正确,登陆成功,退出循环
如果密码不正确,重新登陆,总共有三次机会登陆
4).如果用户不存在
重新登陆,总共有三次机会
"""
users = ['root','westos']
passwd = ['123','456']
num = 1
while True:
User = input('请输入用户名:')
num += 1
if User in users:
print('用户名正确')
num = 1
Password = input('请输入密码:')
num += 1
if Password in passwd[users.index(User)]:
print('登录成功')
break
elif num > 3:
print('抱歉,您的次数超过三次')
break
else:
print('重新登录,总共有三次机会登陆')
elif num > 3:
print('抱歉,您的次数超过三次')
break
else:
print('重新登陆,总共有三次机会')
# 运行结果:
请输入用户名:abdd
重新登陆,总共有三次机会
请输入用户名:fsf
重新登陆,总共有三次机会
请输入用户名:sgsg
抱歉,您的次数超过三次
Process finished with exit code 0
请输入用户名:dada
重新登陆,总共有三次机会
请输入用户名:root
用户名正确
请输入密码:456
重新登录,总共有三次机会登陆
请输入用户名:846
重新登陆,总共有三次机会
请输入用户名:9846
抱歉,您的次数超过三次
Process finished with exit code 0
请输入用户名:root
用户名正确
请输入密码:123
登录成功
Process finished with exit code 0
......
# 测试很长,此处省略.....
感谢大家的陪伴与支持,哈哈哈哈哈,虽然粉不多,但有你们的支持,我一定会坚持下去的。