Python中的数据序列（二）

Python中的数据序列（二）

1、求幸运数字6

第一步：定义二个空列表
nums = []
lucky = []

num = int(input('请输入您要输入的数字：'))

for i in range(1, num+1):
nums.append(i)

for i in nums:
if i % 6 == 0:
# 幸运数字从nums中删除
nums.remove(i)
# 把幸运数字写入到lucky列表中
lucky.append(i)

print(nums)
print(lucky)


2、把8名讲师随机分配到3个教室

rooms = [[],[],[]]

rooms[0]

rooms[1]

rooms[2]


rooms[0或1或2] = 读取的讲师信息


import random

1、定义3间教室以及8名讲师
rooms = [[], [], []]
teachers = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
2、对所有的讲师进行遍历操作
for teacher in teachers:
# 3、生成随机数
index = random.randint(0, 2)
rooms[index].append(teacher)
3、输出每个教室的讲师信息
print(rooms)
i = 1
for room in rooms:
print(f'第{i}个教室中的讲师：{room}')
i += 1


3、知识点补充

[En]

Function: splits the string according to the specified character, which returns a list

fruit = 'apple-banana-orange'
print(fruit.split('-'))


字符串.join(数据序列)


list1 = ['apple', 'banana', 'orange']
print('-'.join(list1))


1、为什么需要元组

[En]

Think about it: what do you do if you want to store multiple data that cannot be modified?

[En]

A: list? A list can store more than one data at a time, but the data in the list allows changes.

num_list = [10, 20, 30]
num_list[0] = 100


[En]

In this case, what if we want to store multiple data and the data is not allowed to be changed?

2、元组的定义

多个数据元组
tuple1 = (10, 20, 30)

tuple2 = (10,)


3、元组的相关操作方法

[En]

Because the data in the tuple is not allowed to be modified directly, most of its operation methods are query methods.

1 元组[索引] 根据==索引下标==查找元素 2 index() 查找某个数据，如果数据存在返回对应的下标，否则报错，语法和列表、字符串的index方法相同 3 count() 统计某个数据在当前元组出现的次数 4 len() 统计元组中数据的个数

nums = (10, 20, 30)
print(nums[2])


nums = (10, 20, 30)
print(nums.index(20))


nums = (10, 20, 30, 50, 30)
print(nums.count(30))


nums = (10, 20, 30, 50, 30)
print(len(nums))


1、为什么需要字典

person = ['Tom', '20', '男']


2、Python中字典(dict)的概念

① 符号为==大括号==（花括号） => {}

② 数据为==键值对==形式出现 => {key:value}，key：键名，value：值，在同一个字典中，key必须是唯一（类似于索引下标）

③ 各个键值对之间用==逗号==隔开

有数据字典
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

dict2 = {}

dict3 = dict()


3、字典的增操作

字典名称[key] = value



1、定义一个空字典
person = {}
2、向字典中添加数据
person['name'] = '刘备'
person['age'] = 40
3、使用print方法打印person字典
print(person)


4、字典的删操作

① del 字典名称[key]：删除指定元素

1、定义一个有数据的字典
person = {'name':'王大锤', 'age':28, 'gender':'male', 'address':'北京市海淀区'}
2、删除字典中的某个元素（如gender）
del person['gender']
3、打印字典
print(person)


② clear()方法：清空字典中的所有key

1、定义一个有数据的字典
person = {'name':'王大锤', 'age':28, 'gender':'male', 'address':'北京市海淀区'}
2、使用clear()方法清空字典
person.clear()
3、打印字典
print(person)


5、字典的改操作

字典名称[key] = value



1、定义字典
person = {'name':'孙悟空', 'age': 600, 'address':'花果山'}
3、打印字典
print(person)


6、字典的查操作

① 查询方法：使用具体的某个key查询数据，如果未找到，则直接报错。

字典序列[key]


② 字典的相关查询方法

1 get(key, 默认值) 根据字典的key获取对应的value值，如果当前查找的key不存在则返回第二个参数(默认值)，如果省略第二个参数，则返回None 2 keys() 以列表返回一个字典所有的键 3 values() 以列表返回字典中的所有值 4 items() 以列表返回可遍历的(键, 值) 元组数组

1、定义一个字典
2、获取字典的相关信息
name = cat.get('name')
age = cat.get('age')
gender = cat.get('gender', 'male')  # get(key, 默认值)


1、定义一个字典
person = {'name':'貂蝉', 'age':18, 'mobile':'13765022249'}
2、提取字典中的name、age以及mobile属性
print(person.keys())


1、定义一个字典
person = {'name':'貂蝉', 'age':18, 'mobile':'13765022249'}
2、提取字典中的貂蝉、18以及13765022249号码
print(person.values())


1、定义一个字典
person = {'name':'貂蝉', 'age':18, 'mobile':'13765022249'}
2、调用items方法获取数据，dict_items([('name', '貂蝉'), ('age', 18), ('mobile', '13765022249')])
print(person.items())
3、结合for循环对字典中的数据进行遍历
for key, value in person.items():
print(f'{key}：{value}')


7、综合案例：通讯录管理系统

[En]

Requirements: open an address book management system, which is mainly used to store the information (name, age, telephone number) of the students in the class.

[En]

Knowledge points: lists, dictionaries, endless cycles

students = [0,1,2]
student = {'name':'刘备', 'age':18, 'mobile': '10086'}

students = [{'name':'刘备', 'age':18, 'mobile': '10086'}, {'name':'关羽', 'age':17, 'mobile': '10000'}, {'name':'张飞', 'age':16, 'mobile': '10010'}]


[En]

When we select a menu, once the function is finished, the entire program execution is over. In order to keep the program running all the time, you can simulate the effect of an endless loop and keep the program running.

while True:
...



1、定义一个列表，将来用于存储所有学员的通讯信息
students = []

2、打印功能菜单
print('-' * 40)
print('欢迎使用传智教育通讯录管理系统V1.0')
print('[1] 增加学员信息')
print('[2] 删除学员信息')
print('[3] 退出系统')
print('-' * 40)

while True:
# 3、提示用户进行相关操作
user_num = int(input('请输入您要进行的操作编号：'))

if user_num == 1:
# 4、提示用户输入学员的信息
student = {}
student['name'] = input('请输入学员的姓名：')
student['age'] = int(input('请输入学员的年龄：'))
student['mobile'] = input('请输入学员的电话：')
# 5、把学员信息保存在列表中
students.append(student)
print(students)

elif user_num == 2:
name = input('请输入要删除的学员信息：')
# 6、遍历所有学员信息
for i in students:
if i['name'] == name:
# 从列表中删除整个学员（字典）
students.remove(i)
print('删除成功')
print(students)
else:
print('您要删除的学员信息不存在')

elif user_num == 3:
print('感谢您使用传智教育通讯录管理系统V1.0')
break

else:
print('输入错误，请重新输入要操作的编号')


4.集合–求交、并和差集

[En]

4. Sets– finding intersection, union and difference sets

① 天生去重

② 无序

2、集合的定义

定义一个集合
s1 = {10, 20, 30, 40, 50}
print(s1)
print(type(s1))

s2 = {'刘备', '曹操', '孙权', '曹操'}
print(s2)
print(type(s1))

s3 = {}
s4 = set()
print(type(s3))  #
print(type(s4))  #


3、集合操作的相关方法（增删查）

☆ 集合的增操作

students = set()
print(students)


② update()方法：向集合中增加序列类型的数据（字符串、列表、元组、字典）

students = set()
list1 = ['刘备', '关羽', '赵云']
students.update(list1)
print(students)

students = set()

students.update('蔡徐坤')


☆ 集合的删操作

① remove()方法：删除集合中的指定数据，如果数据不存在则报错。

③ pop()方法：随机删除集合中的某个数据，并返回这个数据。

1、定义一个集合
products = {'萝卜', '白菜', '水蜜桃', '奥利奥', '西红柿', '凤梨'}
2、使用remove方法删除白菜这个元素
products.remove('白菜')
print(products)
print(products)
4、使用pop方法随机删除某个元素
del_product = products.pop()
print(del_product)


☆ 集合中的查操作

① in ：判断某个元素是否在集合中，如果在，则返回True，否则返回False

② not in ：判断某个元素不在集合中，如果不在，则返回True，否则返回False

定义一个set集合
s1 = {'刘帅', '英标', '高源'}

if '刘帅' in s1:
print('刘帅在s1集合中')
else:
print('刘帅没有出现在s1集合中')


③ 集合的遍历操作

for i in 集合:
print(i)


4、集合中的交集、并集与差集特性

找出集合中的交集、并集和差集<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Find the intersection, union and difference sets in the set</font>*</details>
s1 = {'刘备', '关羽', '张飞', '貂蝉'}
s2 = {'袁绍', '吕布', '曹操', '貂蝉'}

print(s1 & s2)

print(s1 | s2)

print(s1 - s2)
print(s2 - s1)


5.数据序列中的常用方法

[En]

5. Common methods in data sequences

1、什么是公共方法

[En]

The so-called public approach is to support most data sequences.

2、常见公共方法1

• 合并 字符串、列表、元组 * 复制 字符串、列表、元组 in 元素是否存在 字符串、列表、元组、字典 not in 元素是否不存在 字符串、列表、元组、字典

1、+加号，代表两个序列之间的连接与整合
str1 = 'hello'
str2 = 'world'
print(str1 + str2)

2、定义两个列表，对其数据进行整合
list1 = ['刘备', '关羽']
list2 = ['诸葛亮', '赵云']
print(list1 + list2)

3、定义两个元组，对其数据进行整合
tuple1 = (10, 20)
tuple2 = (30, 40)
print(tuple1 + tuple2)


1、字符串与乘号的关系
print('-' * 40)
print('传智教育Python管理系统V1.0')
print('-' * 40)

2、列表与乘号的关系
list1 = ['*']
print(list1 * 10)

3、元组与乘号的关系
tuple1 = (10, )
print(tuple1 * 10)


ips = ['192.168.10.11', '10.1.1.100', '172.15.184.31']
if '10.1.1.100' in ips:
print('列表中元素已存在')
else:
print('列表中元素不存在')


3、常见公共方法2

1 len() 计算容器中元素个数 2 del或del() 根据索引下标删除指定元素 3 max() 返回容器中元素最大值 4 min() 返回容器中元素最小值 5 range(start, end, step) 生成从start到end（不包含）的数字，步长为 step，供for循环使用 6 enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列，同时列出数据和数据下标，一般用在 for 循环当中。

定义一个字符串
str1 = 'hello world'
print(f'字符串的长度为{len(str1)}')

list1 = [10, 20, 30, 40, 50]
print(f'列表的长度为{len(list1)}')

print(f'字典的长度为{len(dict1)}')


定义一个列表
list1 = ['吕布', '董卓', '貂蝉']

del list1[1]
print(list1)

del dict1['age']
print(dict1)


num1 = int(input('请输入第一个数：'))
num2 = int(input('请输入第二个数：'))
num3 = int(input('请输入第三个数：'))
list1 = [num1, num2, num3]
max_num = max(list1)
min_num = min(list1)
print(f'最大值：{max_num}')
print(f'最小值：{min_num}')


list1 = [10, 20, 30, 40, 50]
n = 1
for i in list1:
print(f'第{n}个数：{i}')
n += 1

print('-' * 40)

for key, value in enumerate(list1):
print(f'第{key+1}个数：{value}')


4、序列类型之间的相互转换

list()方法：把某个序列类型的数据转化为列表

1、定义元组类型的序列
tuple1 = (10, 20, 30)
print(list(tuple1))

2、定义一个集合类型的序列
set1 = {'a', 'b', 'c', 'd'}
print(list(set1))

3、定义一个字典
print(list(dict1))


tuple()方法：把某个序列类型的数据转化为元组

定义一个列表类型的数据
list1 = ['a', 'b', 'c', 'd']
print(tuple(list1))

set1 = {10, 20, 30, 40}
print(tuple(set1))


set()方法：将某个序列转换成集合（但是要注意两件事 => ① 集合可以快速完成列表去重 ② 集合不支持下标）

定义一个列表类型的数据
list1 = ['a', 'b', 'c', 'd', 'a']
print(set(list1))

tuple1 = (10, 20, 30, 40)
print(set(tuple1))


1、什么是推导式

[1, 2, 3] 推导式 [1, 4, 9]

2、为什么需要推导式

while循环：

初始化计数器
i = 0
list1 = []

while i


for循环：

list1 = []

for i in range(0, 10):
list1.append(i)
print(list1)


[En]

Think about it: can we simplify the above code to one line of code to finish the program?

3、列表推导式

变量名 = [表达式 for 变量 in 列表 for 变量 in 列表]



list1 = []
for i in range(10):
list1.append(i)
print(list1)


list1 = [i for i in range(10)]
print(list1)


List Deduction首先运行表达式右侧的内容：<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>List deduction first runs the content to the right of the expression:</font>*</details>

...



4、列表推导式 + if条件判断

变量 = [表达式 for 临时变量 in 序列 if 条件判断]

for 临时变量 in 序列:
if 条件判断


list1 = [i for i in range(10) if i % 2 == 0]
print(list1)


5、for循环嵌套列表推导式

for 临时变量 in range(n):
for 临时变量 in range(n):


变量 = [表达式 for 临时变量 in 序列 for 临时变量 in 序列]


(1,0) (1, 0-2)

(1,1) (1, 0-2)

(1,2) (1, 0-2)

(2,0) (2, 0-2)

(2,1) (2, 0-2)

(2,2) (2, 0-2)

list1 = []

for i in range(1, 3):
# 内层循环
for j in range(0, 3):
tuple1 = (i, j)
list1.append(tuple1)
print(list1)


list1 = [(i, j) for i in range(1, 3) for j in range(0, 3)]
print(list1)


6、字典推导式

[En]

Think about it: how can you quickly merge into a dictionary with the following two lists?

list1 = ['name', 'age', 'gender']
list2 = ['Tom', 20, 'male']

person = {'name':'Tom', 'age':20, 'gender':'male'}


① 字典推导式列表推导式思想的延续，语法差不多，只不过产生的是字典而已。

② 字典推导式格式：

变量 = {key:value for key,value in 序列}


dict1 = {1:1, 2:4, 3:9, 4:16, 5:25}

dict1 = {i:i**2 for i in range(1,6)}
print(dict1)


list1 = ['name', 'age', 'gender']
list2 = ['Tom', 20, 'male']

person = {list1[i]:list2[i] for i in range(len(list1))}
print(person)


counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'ACER': 99}

counts = {key:value for key, value in counts.items() if value >= 200}
print(counts)


7、集合推导式

[En]

Think about it: why do you need set derivation? doesn’t list derivation smell good?

[En]

A: the most important feature of the set is to remove the weight.

[En]

Requirements: create a collection with data to the power of 2 of the list below.

list1 = [1, 1, 2]
set1 = {1, 4}


list1 = [1, 1, 2]
set1 = {i**2 for i in list1}
print(set1)


Original: https://blog.51cto.com/u_15553407/5576067
Author: 蓦然1607
Title: Python中的数据序列（二）

(0)

大家都在看

• Android App开发实战之实现微信记账本（附源码 超详细必看）

需要源码或图片集请点赞关注收藏后评论区留言~~~ 一、需求描述 好用的记账本必须具备两项基本功能。一项时记录新帐单，另一项时查看账单列表，其中账单的记录操作要求用户输入账单的明细要…

Python 2023年9月28日
0128
• 目标跟踪算法综述

前言: 目标跟踪是计算机视觉领域研究的一个热点问题，其利用视频或图像序列的上下文信息，对目标的外观和运动信息进行建模，从而对目标运动状态进行预测并标定目标的位置。目标跟踪算法从构建…

Python 2023年10月10日
0107
• 【微服务】Nacos初体验

SpringCloud – Nacos初体验 😄生命不息，写作不止🔥 继续踏上学习之路，学之分享笔记👊 总有一天我也能像各位大佬一样🏆 一个有梦有戏的人 @怒放吧德德🌝…

Python 2023年10月21日
086
• 【Python 实战基础】如何绘制饼状图分析商品库存

一、实战场景 二、主要知识点 文件读写 基础语法 字符串处理 文件生成 数据构建 三、菜鸟实战 1、创建 python 文件 2、运行结果 实战场景：如何绘制饼状图分析商品库存 文…

Python 2023年8月15日
0123
• FIX:FusionCharts Suite XT 3.19.x

FusionCharts Suite XT：探索 100 多张图表和 2000 多张地图FusionCharts 提供了 100 多张图表和 2000 多张地图。凭借广泛的文档、一…

Python 2023年10月8日
0120
• python-函数-统计函数

#(1)amax(),amin() 作用：计算数组中的元素沿指定轴的最大值，最小值 import numpy as np x = np.random.randint(1,11,9)…

Python 2023年6月9日
0162
• 公司对外投资和担保

一、公司对外投资和担保规范 公司对外投资和外他人提供担保，需承担相应的责任 公司可以对外投资和提供担保 二、公司提供担保的方式 保证 抵押 质押 三、公司提供担保的规定 公司对外承…

Python 2023年10月8日
094
• python测试框架之Pytest(一) 安装&使用介绍

目录 概述 Pytest 安装 Pytest 用例编写 * 编码约束 @pytest.mark.marker 用例标签 setup/teardown 用例前置 @pytest.fi…

Python 2023年9月10日
0103
• 通过AndroidJUnit4框架发现用例不会按顺序执行，变成随机了

接上一篇所有错误修改完成后并成功编译成功。 开始整体运行时，发现执行的用例并未按照顺序去执行，变成随机了。此时需要在类前面加上对应的注解，指定用例的执行顺序 @FixMethodO…

Python 2023年6月11日
0128
• flutter系列之:builder为构造器而生

flutter中有很多种Builder，虽然所有的builder都是构造器，但是不同的builder之间还是有很多差距的。今天我们来详细介绍一下Builder，LayoutBuil…

Python 2023年10月18日
0106
• Python 数据分析师的基本修养

数据分析师通常需要使用编程工具来整理大量复杂的数据，并从这些数据中挖掘有用的数据。简而言之，数据分析师是从杂乱的数据中挑选规则的人，这样的工作需要数据分析师掌握以下技能： [En]…

Python 2023年5月24日
0160
• Python介绍

Python 是一门优雅而健壮的编程语言，它继承了传统编译语言的强大性和通用性，同时也借鉴了脚本语言和解释语言的易用性。 Python被设计成是 “符合大脑思维习惯&#…

Python 2023年5月24日
0148
• 蓝桥杯python组最后几天冲刺——超级实用并且详细的python技巧

蓝桥杯冲刺 一、时间问题 * 1.日期的用法(案例) 二、切片运算 * 1.切片函数的使用(暴力破解案例+优化) 2.切片使用 三、数值交换 * 1.双双赋值相等(冒泡+暴力+交换…

Python 2023年8月2日
0147
• 面试突击78：@Autowired 和 @Resource 有什么区别？

@Autowired 和 @Resource 都是 Spring/Spring Boot 项目中，用来进行依赖注入的注解。它们都提供了将依赖对象注入到当前对象的功能，但二者却有众多…

Python 2023年10月23日
0135
• 【python技能树】python简介

1 Python定义 Python 是一种简单易学并且结合了 解释性、编译性、互动性和面向对象的脚本语言。Python提供了高级数据结构，它的语法和动态类型以及解释性使它成为广大开…

Python 2023年7月31日
0118
• numpy中的hstack()、vstack()、stack()、concatenate()函数详解

1. concatenate() 2. stack() 3. vstack() 4. hstack() 5. tf中的stack() 本文主要介绍一下numpy中的几个常用函数，包…

Python 2023年8月26日
0117