python练习|列表

1. 列表的格式

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

2. 列表的作用

# 一次性存储多个数据,且可以为不同数据类型
# 程序员可以对这些数据进行的操作有:增、删、改、查

3. 列表的常见操作

3.1 查找

3.1.1 下标

# 下标
name_list = ['Lisa', 'Eileen', 'Mary']
print(name_list)
print(name_list[0])  # Lisa
print(name_list[2])  # Mary

3.1.2 函数

# 1. index() 返回指定数据所在的下标
# 	语法 列表序列.index(数据,开始位置下标,结束位置下标)
name_list = ['Tom', 'Lisa', 'Ling']
# print(name_list.index('Lisa', 0, 2))  # 1
# 如果查找的数据不存在,则报错

# 2. count() 统计指定数据在当前列表中出现的次数
# print(name_list.count('Lisa'))  # 1
# print(name_list.count('Lisas'))   # 0


# 3. len() 访问列表长度,即列表中数据的个数
print(len(name_list))  # 3

3.1.3 判断是否存在

name_list = ['Tom', 'Lisa', 'Rose']

# 1. in  (公共操作:可在多个地方,如元组、列表中使用)
# print('Tom' in name_list)  # True
# print('Toms' in name_list)  # False

# 2. not in   (公共操作:可在多个地方,如元组、列表中使用)
# print('Tom' not in name_list)  # False
# print('Toms' not in name_list)  # True

# 3.体验案例
name_list = ['Tom', 'Lisa', 'Rose']
# 需求:注册邮箱,用户输入一个账号名,判断这个账号名是否在已有注册用户的列表里,有人注册,则重新输入账号名
"""
1.用户输入一个账号
2.判断 if...else
"""
name = input('请输入您的账号名:')
if name in name_list:
    # 提示用户名已经存在
    print(f'您输入的名字是{name},您输入的账号名已经存在,请重新输入')
else:
    # 提示可以注册
    print(f'您输入的名字是{name},您输入的账号名可以注册')

3.2 增加

3.2.1 append()

# 1. append()
# 语法 序列.append()
name_list = ['Tom', 'Lisa', 'Rose']
# name_list.append('xiaoming')
# print(name_list)

# name_list.append([11, 22])  # ['Tom', 'Lisa', 'Rose', [11, 22]]
# print(name_list)

# 1.列表数据是可改的 --- 列表是可变类型
# 2. append追加数据时,如果数据是一个序列,把它追加到列表的结尾

3.2.2 extend()

extend()
列表结尾追加数据,如果数据是一个序列,则将它逐一添加到列表。

  1. 语法
列表序列.extend(数据)
  1. 体验
name_list = ['Tom', 'Lisa', 'Rose']

# name_list.extend('xiaoming')
# print(name_list)  # 结果为['Tom', 'Lisa', 'Rose', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g']

name_list.extend(['xiaoming', 'xiaowang'])
print(name_list)  # 结果为['Tom', 'Lisa', 'Rose', 'xiaoming', 'xiaowang']

# extend 追加数据是一个序列,把数据里面的数据拆开,再逐一添加到列表结尾

3.2.3 insert()

insert() 指定位置新增数据

  1. 语法
列表序列.insert(位置下标,数据)

# 位置下标,即 你要添加数据的位置
  1. 体验
name_list = ['Tom', 'Lisa', 'Rose']

# name_list.insert(下标,数据)
name_list.insert(1, 'aaa')
print(name_list)  # 结果为['Tom', 'aaa', 'Lisa', 'Rose']

3.3 删除

name_list = ['Tom', 'Lisa', 'Rose']

# 1.del
# del name_list  # 第一种写法
# del(name_list) # 第二种写法
# print(name_list)

# del 可以删除指定下标的数据
# del name_list[0]
# print(name_list)  # 结果为 ['Lisa', 'Rose']


# 2.pop() -- 删除指定下标的数据,如果不指定下标,默认删除最后一个数据
# 无论删下标数据还是删最后一个数据,pop函数都会返回这个被删除的数据

# del_name = name_list.pop()
# del_name = name_list.pop(1)
# print(del_name)  # 结果为 Rose
# print(name_list)  # 结果为 ['Tom', 'Lisa']

# del_name = name_list.pop(1)
# print(del_name)  # 结果为 Lisa
# print(name_list)  # 结果为 ['Tom', 'Rose']


# 3.remove(数据)
# name_list.remove('Tom')
# print(name_list)


# 4.clear() --- 清空列表
# name_list.clear()
# print(name_list)  # 结果为 []

3.4 修改

3.4.1 修改指定下标的数据

name_list = ['Tom', 'Lisa', 'Rose']

name_list[0] = 'aaa'
print(name_list)  # 结果为['aaa', 'Lisa', 'Rose']

3.4.2 逆置 reverse()

list1 = [1, 2, 3, 4, 5, 6]
list1.reverse()
print(list1)  # 结果 [6, 5, 4, 3, 2, 1]

3.4.3 sort () 排序(升序+降序)

  1. 语法
列表序列.sort(key=None, reverse = False)

# reverse 表示排序规则 
# reverse = True (降序)
# reverse = False (升序,默认)

  1. 体验
list1 = [1, 2, 3, 4, 5, 6]
list1.sort()
print(list1)  # 结果  [1, 2, 3, 4, 5, 6] 默认为升序

3.5 复制

# 函数 copy()

name_list = ['Tom', 'Lisa', 'Rose']
list1 = name_list.copy()
print(list1)
print(name_list)

4. 列表的循环遍历

需求:依次打印列表中的各个数据

4.1 while

name_list = ['Tom', 'Lisa', 'Rose']

"""
1.准备表示下标数据
2. 循环while
    条件 i < 3  len()
    遍历:依次按顺序访问到序列的每个数据
    i += 1 
"""
i = 0
while i < len(name_list):
    print(name_list[i])  # 结果为打印 一竖排 名字
    i += 1

4.2 for (比while简洁,优选)

name_list = ['Tom', 'Lisa', 'Rose']

for i in name_list:  
    # 遍历序列中的数据
    print(i)

5.列表嵌套

name_list = [['xaiohong', 'xiaoming', 'xiaoya'], ['Tom', 'Lisa', 'Rose'], ['李一', '李二', '李三']]

print(name_list)

# 列表嵌套时的数据查询

# print(name_list[0])  # 结果为 ['xaiohong', 'xiaoming', 'xiaoya']

print(name_list[0][1])  # 结果为 xiaoming

6. 综合应用

# 随机分配办公室
# 需求:8位老师,3个办公室,将教师随机分配到办公室

"""
1.准备数据
    1.1 8位老师 --  列表
    1.2 3个办公室 -- 列表嵌套
2.分配老师到办公室
    ****随机分配
    把老师名字写入办公室列表 -- 办公室列表追加老师名字数据
3.验证是否分配成功
    打印办公室的详尽信息:办公室人数及教师名字
"""

import random
# 1.准备数据
teachers = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
offices = [[], [], []]

# 2.分配老师到办公室 -- 取到每个老师放在办公室列表 -- 遍历老师列表数据
for name in teachers:
    # 列表追加数据 -- append(选中)  extend  insert
    # xx[0] --  不能指定是某个具体下标 --- 因为随机
    num = random.randint(0, 2)
    offices[num].append(name)
# print(num)
# print(offices)

# 3. 验证是否分配成功

i = 1
# 为更贴近生活,把每个办公室加一个编号
for office in offices:
    # 打印办公室的人数 --- 子列表数据的个数 -- len()
    print(f'办公室{i}的人数是{len(office)}, 老师分别是:')
    # 打印老师的名字
    # print() -- 每个子列表中的名字个数不一定 -- 遍历 -- 子列表
    for name in office:
        print(name)
    i += 1
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值