• 列表list

列表用来存放多条数据:字符串、int、list、dict等都可以

储存一系列名字,存储一些新闻条目,可以使用列表的格式。

# 例如
Name = '张三'
Name2 = 'lisi'
List = ['张三','李四','王五']
  • 列表的基本形式

names=['张三','李四','王五']
nums=[1,2,3,4,5,6,7,8,9]
s=[1,'haha',True]
  • 获取列表中的元素

  • 根据下标索引获取元素

s=[1,2,3,4,5,6]
print(s[0])    # 获取1
print(s[-1])    # 获取6# 《错误》角标越界
print(s[6])    # 列表中不含有下标为6的元素。报错
  • 通过切片获取元素

左闭右开区间

s=[1,2,3,4,5,6]
print(s[0:2])    # 获取1,2
print(s[::-1])    # 列表倒置6,5,4,3,2,1
print(s[5:3:-1])    # 取出6,5
  • 字符串和列表的循环遍历

str='abcdefg'
List1=['张三','李四','王五']
# 第一种:增强for循环
for i in List1:print(i)# 第二种
for i in range(0,len(str)):print(i)    # 这里输出的为每个字符的下标print(str[i])    # 根据下标输出字符
for p in range(0,len(List1)):print(List1[p])    # 和字符串同理# while遍历
i=0
while i<len(str):    # 下标从0开始,所以最大下标=长度-1print(str[i])i+=1
p=0
while p<len(List1):print(List[p])p+=1
  • 列表元素操作

以列表books=['三国演义','水浒传']为例

  • 在末尾添加元素

关键词:append。list.append("内容")

books = ['三国演义', '水浒传']
books.append('西游记')
print(books)    # ['三国演义', '水浒传', '西游记']
  • 插入元素

关键词:insert插入的时候,声明索引位置list.insert(索引,”内容“)

books.insert(0, '红楼梦')  # 在下标0的位置插入
print(books)    # ['红楼梦', '三国演义', '水浒传']# 如果将下标设置为-1,同时又有append添加。那么insert插入位置在append之前。insert中设置的下标为原列表的下标
books.append('西游记')
books.insert(-1, '射雕英雄传')
print(books)    # ['三国演义', '水浒传', '射雕英雄传', '西游记']
  • 修改元素

没有关键词。list[0]="新的值"

# 找到元素,直接赋值内容
books[0]='石头记'
print(books)    # ['石头记', '水浒传']
  • 删除元素

  • remove删除

关键词:list.remove("内容")

books.remove('水浒传')
print(books)    # ['三国演义']
  • 使用python自带函数del删除

关键词:del。del list[下标]

del books[0]  # 三国演义的下标为0,删除下标为0的数据
print(books)  # ['水浒传']
  • pop删除

list.pop() 默认删除最后一个元素
list.pop(下标) 删除下标对应元素
删除的同时可以获取删除的内容

print(books.pop())  # 删除最后一个元素,并且返回删除元素:水浒传
print(books)  # ['三国演义']
  • 列表其他添加方式

append追加
extend逐个添加到列表中--了解
insert插入

list1 = ['三国', '水浒']
list2 = ['红楼', '西游']
# 直接添加
list1.append(list2)  # 将list2添加到list1中.添加后list2中的元素在list1中属于一组
print(list1)  # ['三国', '水浒', ['红楼', '西游']]
print(list1[len(list1) - 1])  # 返回插入后list1中的最后一个元素,得到list2的所有元素。['红楼', '西游']
# 展开添加
list1.extend(list2) # 将list2中的元素逐个添加到list1中
print(list1)    # ['三国', '水浒', '红楼', '西游']
  • 列表元素的查找in、index、count

in:在;not in:不在
index:在列表中查找某个元素获取元素的索引位置。返回值为int
count:计算某个元素出现的次数

# in:
ages = [20, 19, 23, 25, 20, 24, 24, 26, 30, 31]
if 30 in ages:  # 如果30在列表中print('存在')
else:print('不存在')
# not in
if 30 not in ages:  # 如果30不在列表中print('不在')
else:print('在')# index:
print(ages.index(19))  # 1,返回值类型为int。查找不存在的数据会报错# count:
print(ages.count(24))  # 2
print(ages.count(80))  # 0
  • 案例:

names=['张三','李四','王五','赵六']
需求:任意输入一个用户名字,查找在列表中的位置

names = ['张三', '李四', '王五', '赵六']
name = input('输入名字:\n')
if name in names:  # 如果name在列表中。没有这个条件的话,当name不在列表中的时候会报错print('你要查找的名字的索引是:%d' % names.index(name))  # 查找索引,并返回
else:print('没有这个名字')
  • 列表反转和排序

  • 反转

关键词:reverse:反转。修改列表本身

# 反转,直接修改列表本身
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list.reverse()  # 直接反转列表本身,所以不能直接输出
print(list)  # 输出list
  • 排序

针对int、float进行排序
sort:默认从小到大排序

list = [1, 5, 3, 6, 7, 8, 2, 9, 4]
# 正序,从小到大
list.sort()  # 默认从小到大排序,同样是修改列表本身,需要通过列表名输出
print(list)
# 倒序,从大到小
# 使用reverse反转
list.sort(reverse=True)  # reversr为True时,确定反转
print(list)
  • 列表的嵌套

list = [['a'], ['b', 'c'], ['d', 'e', 'f']]
for i in range(0, len(list)):  # i为list列表中每个元素的索引s = list[i]  # 根据索引查找出对应的元素print('第%d个元素中有%d个数据' % (i + 1, len(s)))  # 计算并输出长度for p in s:  # 遍历每个list元素中的元素print(p)
  • 列表案例

列表元素求最大值、最小值

nums = [0, 10, -100, 99, 88, 66]# 第一种
nums.sort()  # 从小到大排序
print(nums[0], nums[-1])  # 第一个为最小值,最后一个为最大值# 第二种
max = nums[0]  # 给max设置一个初始值
min = nums[0]  # 给min设置一个初始值
for num in nums:  # 遍历nums中的元素numif num > max:  # 如果num大于maxmax = num  # 将num赋值给maxif num < min:  # 如果num小于minmin = num  # 将num赋值给min
print(max, min)  # 最后输出max,min# 第三种
maxIndex = 0  # 给最大值的索引值设置一个初始值
minIndex = 0  # 给最小值的索引值设置一个初始值
for i in range(0, len(nums)):  # 遍历列表中每一个元素的索引值if nums[i] > nums[maxIndex]:  # 如果那个索引对应的元素大于maxIndex当前对应的元素的值maxIndex = i  # 将i赋值给maxIndexif nums[i] < nums[minIndex]:  # 如果那个索引对应的元素小于minIndex当前对应的元素的值minIndex = i  # 将i赋值给minIndex
print('最大值为:%d,他的索引是:%d' % (nums[maxIndex], maxIndex))
print('最小值为:%d,他的索引是:%d' % (nums[minIndex], minIndex))# 第四种
print(max(nums))
print(min(nums))

计算每个班级学生总成绩

scores = [[99, 89, 79, 69], [98, 88, 78, 68, 58], [97, 87, 77]]sum = 0  # 定义全局变量sum,为所有班级的总成绩,循环结束sum的值可以进入下一个循环
for i in range(0, len(scores)):  # 获取每个班级的索引clazz = scores[i]  # 根据索引获取每个班级classSum = 0  # 定义局部变量classSum,为每个班级的总成绩,在遍历下一个班级总成绩之前会清零for p in clazz:  # 遍历所有班级的成绩sum += pclassSum += pprint('第%d个班级的总成绩为:%d' % (i + 1, classSum))  # 每个班级循环结束时输出一次班级总成绩
print(sum)  # 所有班级的总成绩
  • 元组

元组和列表类似,不同之处在于元组的元素不能增删改,元组使用小括号,list使用中括号
数据类型:tuple

tuple = ('a', 'b', 'c', 'd')
print(tuple, type(tuple))  # ('a', 'b', 'c', 'd') <class 'tuple'>
  • 根据下标和切片获取元素

tuple = ('a', 'b', 'c', 'd')
# 根据索引获取元素
print(tuple[0], tuple[-1])  # a d
# 切片
print(tuple[0:3])  # ('a', 'b', 'c')
# 遍历
for i in tuple:print(i)
for p in range(0, len(tuple)):  # 获取下标print(tuple[p])  # 根据下表获取对应元素
  • python中内置函数

len:获取长度
max:获取最大值
min:获取最小值
del:删除

tuple = (10, 20, 30, 9)  # 元组,不能增删改
print(len(tuple))  # 4
print(max(tuple))  # 30
print(min(tuple))  # 9list = [1, 2, 3, 4]
del list[0]  # 删除索引为0的元素
print(list)  # [2, 3, 4]
  • 案例

学员信息查询,在三个班级中,查找张三信息,判断张三是否存在,张三属于第几个班级。

# 学员信息查询,在三个班级中,查找张三信息,判断张三是否存在,张三属于第几个班级。
list = [['张三', '李四'], ['王五', '赵六', '周七'], ['钱八', '吴九']]
name = input('输入你要查的名字:\n')
flag = -1  # 设置全局变量,并且设置一个初始值,定义为找不到
for i in range(0, len(list)):  # 获取每个班级的索引clazz = list[i]  # 根据索引获取每个班级的人员信息if name in clazz:  # 如果name在clazz中flag = i  # 将i的值赋值给flag
if flag == -1:  # 如果flag==-1,那么没找到print('没有找到')
else:  # 如果flag!=-1意思是找到了print('找到了,您要找的%s是第%d班的' % (name, flag + 1))

分别录入三组数据:使用循环控制,每组录入3个数据。录入结束,能够打印出所有信息。

list = []  # 定义一个空容器,为全局变量
for i in range(1, 4):  # 定义list列表的循环次数zuList = []  # 定义组的空容器,用于存放每组输入的数据,这是个局部变量,当开始下一个list循环时会清零for p in range(1, 4):  # 定义zuList的循环次数ziList = input('请录入第%d组第%d个数据:\n' % (i, p))  # 插入数据,定义为ziListzuList.append(ziList)  # 将输入的数据插入到zuList中list.append(zuList)  # zuList循环结束将数据插入到list列表后,进入下一个循环
print(list)  # 循环结束,输出list

登陆操作:用户名和密码及进行录入判断 当用户名是Colin 密码是123456的时候显示登录成功。如果密码和用户名录入错需要循环录入。并且录入错误次数超过三次提示:账号已锁。并且停掉循环

list = ['Colin', '123456']  # 定义存放账号密码的列表
count = 0  # 定义全局变量count记录输入错误的次数,初始值为0
while count < 3:  # 当错误次数count小于3时循环name = input('请输入用户名:\n')  # 输入用户名pwd = input('请输入密码:\n')  # 输入,密码nIndex = list.index('Colin')  # 根据索引从list中提取正确的用户名pIndex = list.index('123456')  # 根据索引从list中提取正确的密码if name == list[nIndex]:  # 如果用户名正确,验证密码if pwd == list[pIndex]:  # 如果密码正确,登陆成功,跳出循环print('登陆成功')breakelse:  # 密码不正确print('用户名或密码错误')count += 1  # 错误次数+1else:  # 用户名不正确print('用户名错误')count += 1  # 错误次数+1
print('账号锁定')  # 错误次数到达上限后跳出循环,输出# 或者
list = ['Colin', '123456']  # 定义存放账号密码的列表
count = 0  # 定义全局变量count记录输入错误的次数,初始值为0
while count < 3:  # 当错误次数count小于3时循环name = input('请输入用户名:\n')  # 输入用户名pwd = input('请输入密码:\n')  # 输入,密码nIndex = list.index('Colin')  # 根据索引从list中提取正确的用户名pIndex = list.index('123456')  # 根据索引从list中提取正确的密码if name == list[nIndex] and pwd == list[pIndex]:  # 账号密码都正确时print('登陆成功')  # 登陆成功break  # 跳出循环else:  # 其他情况print('用户名或密码错误')count += 1  # 错误次数+1
print('账号锁定')  # 错误次数到达上限后跳出循环,输出
  • 冒泡排序

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

list = [2, 3, 1, 4, 8, 6, 5]
for i in range(0, len(list) - 1):  # 设置要循环的次数for j in range(0, len(list) - 1 - i):  # 设置每次循环比较数据的次数,i每循环完一次,数据就可以少比较一次if list[j] > list[j + 1]:  # 相邻两个元素之间进行比较list[j], list[j + 1] = list[j + 1], list[j]  # 将相邻的两个数的数值进行替换
print(list)
  • 字典的简单操作

  • 字典的介绍

dict用来存放一条数据,字符串、int、list、dict都可以

  • 字典的特点

字典:元素组成为”键“,”值“,”对“
字典和列表一样,可以存储多个数据类型
字典中每个元素由两部分组成,键:值 key: value
字典中查找元素时,是根据“键”来获取的

students = {"name": "wangxiaoming", "sex": "man", "age": 18}
  • 元素的获取

使用键查找。查找不存在的数据时会报错
使用‘get’查找。查找不存在的数据同时不让他报错就用get

# 使用键查找
students = {"name": "wangxiaoming", "sex": "man", "age": 18}
print(students["name"])# 使用get查找
print(students.get('name'))
# 不存在示例
print(students.get("abc"))    # 不会报错,返回None
  • 字典的增删改

book = {'name': '天龙八部', 'price': '30', 'author': '金庸', 'des': '这是一部言情剧,不管和谁谈恋爱都是他妹的故事'}# 字段的增加key,value
book['zyrw'] = '晓峰虚竹段誉'
print(book)
# 字段的修改,对已有字段进行赋值
book['des'] = '这是一部武侠剧,其中三个结拜兄弟认爹的故事'
print(book)
# 字段的删除
del book['price']
print(book)
  • 字典录入数据

user = {}
user['name'] = input('请输入用户名:\n')
user['gender'] = input('请输入性别:\n')
user['age'] = int(input('请输入年龄:\n'))
print(user)

添加多个用户信息

# 添加多个用户信息
list = []  # 定义一个空列表用来存放数据。全局变量
for i in range(1, 3):print('请输入第%d个用户的信息' % i)user = {}  # 定义一个空字典用来输入数据。局部变量user['name'] = input('请输入用户名:\n')user['gender'] = input('请输入性别:\n')user['age'] = int(input('请输入年龄:\n'))list.append(user)  # 将字典插入到列表中,下次循环变为空
print(list)
  • 字典的遍历

user = {'name': '张三', 'age': 18, 'gender': '男', 'hobby': ['篮球', '足球', '排球']}
# 字典的遍历
print(user.keys())  # 获取所有的键。dict_keys(['name', 'age', 'gender', 'hobby'])
print(user.values())  # 获取所有的值。dict_values(['张三', 18, '男', ['篮球', '足球', '排球']])
print(user.items())  # 获取所有的对。dict_items([('name', '张三'), ('age', 18), ('gender', '男'), ('hobby', ['篮球', '足球', '排球'])])# 第一种,通过键遍历
for key in user.keys():  # 遍历所有的键print(key, user[key])  # 根据key获取value,user[key]\user.get[key]# 第二种,通过items,根据item[0],item[1]分别获取key、value
for item in user.items():  # 遍历所有的对# print(item)print(item[0], item[1])  # 根据索引分别输出每个对中的key、value
# 变形
for key, value in user.items():  # 可以在遍历时将键、值分开定义print(key, value)
  • 案例

统计字符转中各个字符出现的次数:HelloWord

# 用字典统计字符转中各个字符出现的次数:HelloWord
# 思路:遍历字符串,将字符放到空容器中,放之前查看字典中有没有这个字符,重复的话获取到这个字母的value值,+1
str = 'HelloWord'
dict = {}
count = 0
for i in str:num = dict.get(i)  # 查看字典中是否存在这个字母。因为不确定是否存在,所以用get,避免报错if num == None:  # 如果返回值为空,说明没有dict[i] = 1  # 将字母添加进字典,设置值为1else:  # 返回值不为空num += 1  # 将返回的出现次数+1dict[i] = num  # 将返回值设置为字母的新值
print(dict)
for key, value in dict.items():  # 定义键、值通过对遍历字典,将键值分别输出print('字母:%s,出现了%d次' % (key, value))
  • 案例:用户管理系统

需要完成如下基本功能:
1:添加用户
2:查询所有用户
3:查询单个用户
4:删除用户
5:修改用户
6:退出系统
程序运行后,除非选择退出系统,否则重复执行该功能

# 思路:用户特性:姓名,年龄,性别
# 用户信息怎么存放?dict
# 多个用户怎么存放?list
# 将每一步分开设计
list = []  # 全局变量,放置用户信息
while True:  # 死循环print('=====用户管理系统=====')print('1:添加用户\n2:查询所有用户\n3:查询单个用户\n4:删除用户\n5:修改用户\n6:退出系统\n')num = int(input('输入你的选项:\n'))  # 让用户选择想要进入的服务if num < 1 or num > 6:  # 当输入的数字不在选项中的时候print('没有这个选项,重新输入:\n')continue  # 跳过本次循环else:  # 输入数字在选项中# 1:添加用户if num == 1:print('====输入用户信息====')user = {}  # 用来临时存放用户数据user['name'] = input('请输入名字:\n')  # 输入name键的值user['age'] = input('请输入年龄:\n')  # 输入age键的值user['gender'] = input('请输入性别:\n')  # 输入gender键的值list.append(user)  # 将dict加入到user列表中,下次循环dict清空# 2:查询所有用户elif num == 2:print('====用户列表====')for i in list:  # 查询user中的所有元素print('用户名:%s,年龄:%s,性别:%s' % (i['name'], i['age'], i['gender']))# 3:查询单个用户elif num == 3:name = input('输入你要查询的名字:\n')  # 键盘录入要查询的名字index = -1  # 定义要查找用户的索引,因为索引全为正数,所以初始值定为-1for userIndex in range(0, len(list)):  # 从0开始遍历,返回的值为索引user = list[userIndex]  # 根据索引提取用户信息if user['name'] == name:  # 通过键在列表中查找name对应的值与输入的数据是否相同,如果相同index = userIndex  # 记录当前用户信息的索引if index != -1:  # 找到了输入的用户名user = list[index]  # 根据索引获取用户信息print('====用户查找到了====')print('用户名:%s,年龄:%s,性别:%s' % (user['name'], user['age'], user['gender'],))  # 通过键输出对应的值else:print('查无此人')continue  # 跳出循环,进入下次循环# 4:删除用户elif num == 4:print('=====删除用户=====')name = input('请输入你要删除的用户:\n')# 查找这个名字对应的用户是否存在,如果不存在,提示;如果存在删除index = -1  # 定义要删除用户的索引,初始值为-1for userIndex in range(0, len(list)):  # 循环遍历list长度,得到的值为索引user = list[userIndex]  # 根据索引提取用户信息if user['name'] == name:  # 用户存在index = userIndex  # 用户存在,就记录下当前用户的索引if index == -1:  # index没有被赋值,说明用户不存在print('您要删除的用户不存在')continueelse:  # 用户存在del list[index]  # 根据索引删除列表中的元素print('===用户已删除===')# 5:修改用户elif num == 5:print('=====修改用户信息=====')name = input('你想要修改谁的信息:\n')index = -1  # 首先定义要删除的用户的索引,初始值为-1for userIndex in range(0, len(list)):  # 遍历list长度,得到索引if list[userIndex]['name'] == name:  # 如果对应用户信息的对应name键的值和输入的用户相同,则当前索引为要修改用户信息的索引index = userIndex  # 记录下当前索引if index == -1:  # 索引没有被修改,要修改的用户不存在print('要修改的用户不存在')continueelse:user = list[index]  # 要修改的用户信息为list[index]# 输入要修改的信息user['age'] = input('请输入新的年龄:\n')  # 根据键直接修改字典内容user['gender'] = input('请输入新的性别:\n')print('修改成功')# 6:退出系统else:print('=====感谢使用本系统=====')break  # 程序运行后,除非选择退出系统,否则重复执行该功能

*python高级数据-列表-元组-字典相关推荐

  1. python变量 数据类型 列表 元组 字典

    python基础语法2 变量 数据类型与类型转换 列表 添加列表元素 修改元素 删除列表元素 组织列表 创建数值列表 操作列表 元组 元组转列表 字典 创建字典 列表取值 字典删除增加修改 变量 变量 ...

  2. python 高级变量类型(列表/元组/字典/字符串)

    前言 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) 真 True 非 0 数 -- 非零即真 假 False 0 复数型 ...

  3. python高级数据筛选_python高级编程,列表字典集合相关的数据筛选

    每天坚持学习一点,进行数据复盘,学习就是不一样 python高级编程,列表字典集合相关的数据筛选 #先看看第一个列表筛选 2017 9 16 高效python编程的一个案例:from random i ...

  4. Python列表,元组,字典的区别

    Python列表,元组,字典的区别: 1.元组是不可变的, 而列表.字典是可变的.元组是不可变对象,对象一旦生成,它的值将不能更改:列表是可变对象,对象生成后,可以对其元素进行更改.添加.删除.清空. ...

  5. Python 字符串/列表/元组/字典之间的相互转换 - Python零基础入门教程

    目录 一.字符串 str 与列表 list 1.字符串转列表 2.列表转字符串 二.字符串 str 与字典 dict 1.字符串转字典 2.字典转字符串 三.列表 list 与字典 dict 1.列表 ...

  6. python列表元组字典集合实验心得_python学习小总结(列表、元组、字典、集合、字符串)...

    ---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.ext ...

  7. Python基础之day03-字符串,列表,元组,字典

    Python基础之day03-字符串,列表,元组,字典 文章目录 Python基础之day03-字符串,列表,元组,字典 一.字符串 二.下标与字符串切片 三.列表 四.元祖 五.字典 六.公用方法 ...

  8. python中列表 元组 字典 集合的区别

    参考文章:python中列表 元组 字典 集合的区别

  9. Day2 - Python基础2 列表、字典、集合 --转自金角大王

    Day2 - Python基础2 列表.字典.集合 --转自金角大王 Posted on 2018-01-24 13:23 Byd_lei 阅读(41) 评论(0)  编辑 收藏 本节内容 列表.元组 ...

最新文章

  1. Javascript 数组
  2. CentOS7 设置开机直接进入命令行界面
  3. html5 json转字符串,web前端-js小记(5)-字符串及json
  4. c语言中 if(week == 6,C语言程序设计(第六章).pptx
  5. 高时空损耗的Scanner会卡爆程序(记洛谷P1567的Java性能优化,Java语言描述)
  6. BZOJ4737 组合数问题 【Lucas定理 + 数位dp】
  7. PyQt5简单的例子
  8. AFNetworking 文件断点下载详细解读
  9. 作用JavaScript访问和操作数据库
  10. 几百万数据量的Excel导出会内存溢出和卡顿?那是你没用对方法!
  11. if函数3个条件3个结果C语言,if函数3个条件嵌套公式 包括60为及格否则为不及格...
  12. linux 通过关键字查询到进程,并kill掉
  13. 2012冬-我想和生活谈谈
  14. 华晨宏盛让理财更有实用性的小窍门有哪些?最好的理财方法有哪些
  15. 声明$(function(){})的含义
  16. Discuz x2 数据字典
  17. Gerrit no Verified 在最新的2.7版本之后添加Verified
  18. 7年时间,从功能测试到测试开发月薪30K,有志者事竟成
  19. php三元运算符怎么用,PHP三元运算符使用说明
  20. 单源最短路径: 差分约束和最短路径

热门文章

  1. oracle vba 数组_vba 创建数据库
  2. Flutter教程之使用 Flutter Flame 快速轻松地创建 2D 游戏(教程含源码)
  3. 怎样创建一个uni-app项目
  4. wordpress在数据库修改密码
  5. IDA简单使用及源码修改教程
  6. 《一起学》系列11:Redis入门
  7. 微信小程序原生开发流程 - 00
  8. Java实现中国式排名_统计中国式排名的三种方法,一定有一个适合你
  9. Cannot allocate memory的错误
  10. 《炬丰科技-半导体工艺》 超临界二氧化碳清洗晶圆工艺