Python列表、元组详解

列表的创建和使用

name_list = ['TOM','Lily','ROSE']
print(name_list)   # ['TOM', 'Lily', 'ROSE']
# 根据下标进行输出
print(name_list[0])  # 输出 TOM
print(name_list[1])  # 输出 Lily
print(name_list[2])  # 输出 ROSE

判断数据是否在列表中存在

name_list = ['TOM','Lily','ROSE']
# 1. in  如果在里面就返回true,否则false
print('TOM' in name_list)
print('TOMS' in name_list)


# 2. not in   这个跟in相反
print('TOM' not in name_list)
print('TOMS' not in name_list)

体验案例

name_list = ['TOM','List','ROSE']


# 需求:注册邮箱,用户输入一个账户名,判断这个账号是否存在,如果存在,提示用户,否则提示可以注册
name = input("请输入您的邮箱账号名:")
if name in name_list:
    # 提示用户名已经存在
    print(f'您输入的名字是{name},此用户已经存在')
else:
    # 提示可以注册
    print(f'您输入的名字是{name},可以注册')

列表的常见操作(查找、增加、删除、修改、赋值)

(1)查找(index、count、len)

name_list = ['TOM','Lily','Rose']


# 1.index()
print(name_list.index('TOM'))  #返回 0
# print(name_list.index('TOMs'))  没有找到,报错


# 2. count()
print(name_list.count('TOM'))
# print(name_list.count('TOMS')) # 报错


# 3.len()
print(len(name_list)) # 输出3

(2)增加(append、extend、insert)

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


name_list = ['TOM','Lily','ROSE']
name_list.append('xiaoming')
name_list.append([11,22])
name_list.append(11)
print(name_list)  # 输出结果为:['TOM', 'Lily', 'ROSE', 'xiaoming', [11, 22], 11]

# extent() 追加数据是一个序列,把数据序列里面的数据拆开然后逐一追加到列表的结尾
name_list = ['TOM','Lily','ROSE']
name_list.extend('xiaoming')
# 把序列拆开,逐一的放到列表中
name_list.extend(['xiaoming','xiaojun'])
print(name_list) 
 # 输出结果为:['TOM', 'Lily', 'ROSE', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g', 'xiaoming', 'xiaojun']

name_list = ['Tom','Lily','ROSE']
# name_list.insert(下标,数据)  在指定位置加入数据
name_list.insert(1,'aa')
print(name_list) # 输出的结果为:['Tom', 'aa', 'Lily', 'ROSE']

(3)删除(del、pop、remove、clear)

name_list = ['Tom','Lily','ROSE']


# 1. del
# del name_list
# print(name_list) 已经把列表已经删除,已经没有列表了


# del 也可以指定下标的数据
# del name_list[0]
# print(name_list)   # 输出的结果 ['Lily', 'ROSE']




# 2. pop() 删除指定下标的数据,如果不指定下标,默认删除最后一个数据
# 无论是按照下标还是删除最后一个,pop函数都会返回这个被删除的数据. 比较厉害的是删除一个数据能用一个变量去接收
del_name = name_list.pop()
del_name = name_list.pop(1)
print(del_name)
print(name_list)


# 3. remove(数据) 按照指定的数据进行删除的
# name_list.remove('ROSE')
# print(name_list)


# 4. clear() -- 清空
# name_list.clear()
# print(name_list)  # 直接清空整个数据

(4)修改(reverse、sort)

name_list = ['TOM','Lily','ROSE']


# 修改指定下标的数据
# name_list[0] = 'aaa'
# print(name_list) # ['aaa', 'Lily', 'ROSE']


# 2. 逆序 reverse()
list1 = [1, 3, 4, 2, 5]
# list1.reverse()
# print(list1)


# 3. sort() 排序:升序(默认)和 降序
# list1.sort()  # 升序
list1.sort(reverse=False)  # 升序 [1, 2, 3, 4, 5]
list1.sort(reverse=True)   # 降序 [5, 4, 3, 2, 1]
print(list1)

(5)赋值

name_list = ['tom','lucy','jack']
list1 = name_list.copy()
print(list1)
print(name_list)

列表的循环遍历(for、while)

for循环

name_list = ['tom','rose','jack']
i = 0
while i < len(name_list):
    print(name_list[i])
    i += 1

while循环

# for循环的代码量要少于while的代码量
# 一般在工作岗位下,涉及到遍历序列当中的数据的话,一般优选于for循环
name_list = ['tom','rose','jack']
for i in name_list:
    # 遍历序列中的数据
    print(i)

列表的嵌套

列表嵌套时的数据查询

name_list = [['TOM', 'Lily','Rose'], ['张三','李四','王二'], [ '小红', '小绿', '小蓝']]
# print(name_list)
# 列表嵌套的时候的数据查询
print(name_list[0])
print(name_list[0][0])

案例-随机分配办公室

# 需求:八位老师,3个办公室,将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(在指定位置加入数据)
    num = random.randint(0,2)
    offices[num].append(name)           #追加数据
# print(num)
# print(offices)


# 为了更贴合生活,把各个办公室子列表加一个办公室编号1 ,2 ,3
i = 1
# 3. 验证是否成功
for office in offices:
    # 打印办公室人数 -- 子列表数据的个数 len()
    print(f'办公室{i}的人数是{len(office)}')
    # 打印老师的名字
    # print() -- 每个自立表里面的名字个数不一定 -- 遍历 -- 子列表
    for name in office:
        print(name)
    i += 1

元组的访问

注意: 如果是单个数据的元组,那么后面必须加逗号,否则就不是元组的数据类型,而是整个数据本身的数据类型

# 输出元组
t1 = (10, 20, 30)
print(t1)  # 输出 (10, 20, 30)


# 如果是单个数据的元组,那么后面必须加逗号,否则就不是元组的数据类型,而是整个数据本身的数据类型
# 1.多个数据元组
t1 = (10, 20, 30)
print(type(t1))  # 输出 <class 'tuple'>


# 2. 单个数据元组
t2 = (10,)
print(type(t2))  # 输出 <class 'tuple'>
=====================================================================


# 3. 如果单个数据的元组不加逗号
t3 = (10)
print(type(t3))  # 输出 <class 'int'>


t4 = ('aaa')
print(type(t4))  # 输出 <class 'str'>
================================================================================
t5 = ('aaa',)
print(type(t5))  # 输出  <class 'tuple'>

元组常见操作(查找、修改)

(1)查找

t1 = ('aa', 'bb', 'cc')


# 1. 下标
print(t1[0])   # aa


# 2. index()
print(t1.index('aa'))  # 输出0  其实有参数二,有参数三对应一个查找的范围,如果没有找到就直接报错。


# 3. count()
print(t1.count('aa')) # 统计aa的次数,输出结果为1


# 4. len()
print(len(t1))  # 统计整个元组的个数,输出结果为3

(2)修改

# 元组确实不能修改,但是元组中含有的列表可以修改。
# 工作中尽可能遵循一个规则,但凡是出现在小括号元组里面的数据,尽可以能靠自觉去要求不做修改
# 工作中如果是同事的代码,有数据出现在元组中,尽可能在查找操作的时候,小心一点,尽可能不要去修改这一部分的操作。


t1 = ('aa', 'bb', 'cc')
# t1[0] = 'aaa' 这个操作是错的,是不能修改的。
t2 = ('aa', 'bb', ['cc', 'dd'])
print(t2[2])
t2[2][0] = 'TOM'
print(t2)
 0
 0
 分享
评论图片
评论