Python基础篇(六)

Python基础篇(六)

    • 前言
    • 一、列表操作
        • 1.1 查找
        • 1.2 判断
        • 1.3 增加
        • 1.4 删除
        • 1.5 修改
        • 1.6 复制
        • 1.7 列表的循环遍历
        • 1.8 列表嵌套
    • 二、任务清单
        • 2.1 基础练习
        • 2.2 提升练习
    • 总结

前言

今天教教大家怎样使用Python中的列表及功能,你准备好了吗?

一、列表操作

首先,列表中的方法与上一篇介绍的字符串操作诸多相似。

  • 语法格式
变量名 = [数据1,数据2,数据3......]

"""
1. 列表类型以 [] 包含起来
2. 列表中的元素以 ',' 分割
3. 列表中的元素数据类型没有限制
"""
# 举例
list1 = ['张三','李一','赵四',18,True]  # 可以是字符串类型,int类型,布尔类型。
  • 作用
    一次性的存储多个数据,对这些数据可以进行的操作是分别是:增、删、改、查。

1.1 查找

  1. 下标
    说明:可以通过列表中指定的下标来找到对应的数据
  • 举例
list1 = ['张三','李一','赵四',18,True]
print(list1[0])  # 结果为 张三
print(list1[2])  # 结果为 赵四
print(list1[4])  # 结果为 True
  1. index():检测某个数据是否包含在列表中,如果在,返回这个数据开始位置的下标索引,否则报错。
  • 语法格式
列表序列.index(数据,开始位置下标,结束位置下标)
  • 举例
list1 = ['张三','李一','赵四',18,True]
print(list1.index('张三'))  # 结果为 0
print(list1.index(18))  # 结果为 3
print(list1.index('123'))  # 结果为 报错
  1. count():统计指定数据在当前列表中出现的次数。
  • 举例
list1 = ['张三','李一','赵四',18,True]
print(list1.count('张三'))  # 结果为 1
print(list1.count('abc'))  # 结果为 0
  1. len():访问列表长度,即列表中数据的个数。
  • 举例
list1 = ['张三','李一','赵四',18,True]
print(len(list1))  # 结果为 5

1.2 判断

  1. in:判断指定数据在某个列表序列,如果在返回 True,否则返回 False。
list1 = ['张三','李一','赵四',18,True]
print('赵四' in list1)  # 结果为 True
print('abc' in list1)  # 结果为 False
  1. not in :判断指定数据不再某个列表序列,如果不在返回 True,否则返回 False。
list1 = ['张三','李一','赵四',18,True]
print('赵四' not in list1)  # 结果为 False
print('abc' not in list1)  # 结果为 True

1.3 增加

  1. append() :列表结尾追加数据
  • 语法格式
列表序列.append(数据)
  • 举例
list1 = ['张三','李一','赵四',18,True]
list1.append(False)  

# 结果为 ['张三', '李一', '赵四', 18, True, False]
print(list1)  

# 列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,所以里列表是可变数据类型

# 如果追加的数据是一个序列,则追加整个序列列表
list1 = ['张三','李一','赵四',18,True]
list1.append(['张飞','刘备','关羽'])

# 结果为 ['张三', '李一', '赵四', 18, True, ['张飞', '刘备', '关羽']]
print(list1)
  1. extend() :列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表。
  • 语法格式
列表序列.extend(数据)
  • 举例
# 添加序列数据
list1 = ['张三','李一','赵四',18,True]
list1.extend(['张飞','刘备','关羽'])

# 结果为 ['张三', '李一', '赵四', 18, True, '张飞', '刘备', '关羽']
print(list1)

# 添加单个数据
list1 = ['张三','李一','赵四',18,True]
list1.extend('诸葛亮')

# 结果为 ['张三', '李一', '赵四', 18, True, '诸', '葛', '亮']
print(list1)
  1. insert() :指定位置添加数据
  • 语法格式
列表序列.insert(位置下标,数据)
  • 举例
list1 = ['张三','李一','赵四',18,True]
list1.insert(2,'诸葛亮')

# 结果为 ['张三', '李一', '诸葛亮', '赵四', 18, True]
print(list1)

1.4 删除

  1. del
  • 语法
del 目标
  • 举例
# 删除列表
list1 = ['张三','李一','赵四',18,True]
del list1

# 因为del是直接将列表删除掉了,所以如果再输出列表  结果为 报错  
print(list1)

# 删除指定数据
list1 = ['张三','李一','赵四',18,True]
del list1[0]

# 结果为 ['李一', '赵四', 18, True]
print(list1)
  1. pop() : 删除指定下标的数据(默认为最后一个),并返回该数据。
  • 语法格式
列表序列.pop(下标)
  • 举例
list1 = ['张三','李一','赵四',18,True]
print(list1.pop(1))  # 结果为 李一

# 结果为 ['张三', '赵四', 18, True]
print(list1)
  1. remove() :移除列表中某个数据的第一个匹配项
  • 语法格式
列表序列.remove(数据)
  • 举例
list1 = ['张三','李一','赵四','李一',18,True]
list1.remove('李一')  

# 结果为 ['张三', '赵四', '李一', 18, True]
print(list1)
  1. clear() :清空列表
  • 举例
list1 = ['张三','李一','赵四','李一',18,True]
list1.clear()

print(list1)  # 结果为 []

1.5 修改

  1. 修改指定下标数据
  • 举例
list1 = ['张三','李一','赵四',18,True]
list1[0] = '老王'

print(list1)  # 结果为 ['老王', '李一', '赵四', 18, True]
  1. reverse() :倒序排列
  • 举例
list1 = ['张三','李一','赵四',18,True]
list1.reverse()

print(list1)  # 结果为 [True, 18, '赵四', '李一', '张三']
  1. sort() : 排序
  • 语法格式
列表序列.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]

1.6 复制

  1. copy()函数
  • 举例
list1 = [5,1,11,20,6,33]
list2 = list1.copy()

print(list2)  # 结果为 [5, 1, 11, 20, 6, 33]

1.7 列表的循环遍历

说明:依次打印列表中的各个数据。

  • 举例
# 遍历列表
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 ,
根据我们所学的知识,了解到是可以直接指定小标修改列表中的数据,
那么可以得出它是通过下标直接修改了原列表中的值,所以原列表改变。
"""

1.8 列表嵌套

说明 : 列表嵌套指的是一个列表里面包含了其他的子列表。

  • 举例
list1 = [['小明','小红','小王'],['老王','老张','老李'],[1,2,3]]

# 如何找到老王?

# 第一步,按下标先找到老王所在的列表
print(list1[1])  # 结果为 ['老王', '老张', '老李']

# 第二步,接着在老王所在的列表中通过下标找到数据老王,就表示成功找到
print(list1[1][0])  # 结果为老王

二、任务清单

2.1 基础练习

  1. 创建一个空列表,命名为names,往里面添加 Lihua、Rain、Jack、Xiuxiu、Peiqi和Black元素
names = []
names.extend(['Lihua','Rain','Jack','Xiuxiu','Peiqi','Black'])
print(names)   
# 结果为 ['Lihua', 'Rain', 'Jack', 'Xiuxiu', 'Peiqi', 'Black']
  1. 往(1)中的names列表里Black前面插入一个Blue
names.insert(5,'Blue')
print(names)
# 结果为 ['Lihua', 'Rain', 'Jack', 'Xiuxiu', 'Peiqi', 'Blue', 'Black']
  1. 把names列表中Xiuxiu的名字改成中文
names[3] = '羞羞'
print(names)
# 结果为 ['Lihua', 'Rain', 'Jack', '羞羞', 'Peiqi', 'Blue', 'Black']
  1. 往names列表中Rain后面插入一个子列表[“oldboy”,“oldgirl”]
names.insert(2,['oldboy','oldgirl'])
print(names)
# 结果为 ['Lihua', 'Rain', ['oldboy', 'oldgirl'], 'Jack', '羞羞', 'Peiqi', 'Blue', 'Black']
  1. 返回names列表中Peiqi的索引值(下标)
print(names.index('Peiqi')) # 结果为 5
  1. 创建新列表[1,2,3,4,2,5,6,2,],合并到names列表中
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]
  1. 循环names列表,打印每个元素的索引值和元素
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
"""
  1. 循环names列表,打印每个元素的索引值和元素,当索引值为偶数时,把对应的元素改成-1
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']
"""
  1. names列表里有3个2,请返回第二个2的索引值,不要人肉,要动态找
names = [1,2,3,4,2,5,6,2]
print(names.index(2,names.index(2)+1))  # 结果为 4
  1. 现有商品列表如下
  • products = [[“iphone”,6888],[“MacPro”,14800],[“小米6”,2499],[“Coffee”,31],[“Book”,60],[“Nike”,699]]
  • 输出每件商品的名称和价格
  • 参考格式如下:
    • 手机: iphone,价格: 6888
    • 手机:MacPro,价格:14800
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
"""

2.2 提升练习

  1. 用户输入月份,判断这个月是哪个季节
  • 分析: 3,4,5月----春季 6,7,8----夏季 9,10,11—秋季 12,1,2----冬季
  • 提示:可以创建多个列表,每个列表对应一个季节,存储对应的月份
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. 编写用户登录系统
"""
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
......
# 测试很长,此处省略.....

总结

感谢大家的陪伴与支持,哈哈哈哈哈,虽然粉不多,但有你们的支持,我一定会坚持下去的。

你可能感兴趣的:(Python,python)