python3 0基础学习----数据结构(基础+练习)

python 0基础学习笔记之数据结构

  • 📚 几种常见数据结构
    • 列表 (List)
      • 1. 定义
      • 2. 实例:
      • 3. 列表中常用方法
        • .append(要添加内容) 向列表末尾添加数据
        • .extend(列表) 将可迭代对象逐个添加到列表中
        • .insert(索引,插入内容) 向指定位置插入内容
        • .remove(删除内容) 删除指定内容
        • .pop(索引) 删除指定索引处内容并返回删除内容
        • .index(要查询内容) 返回一个与制定元素匹配的索引,不改变原列表
        • .count(要查询内容) 返回列表中该元素出现次数
        • .sort() 同类型排序(默认升序),不同类型会报错TypeError: '<' not supported between instances of 'int' and 'str'
        • .reverse() 反向排序,不分类型
    • 元组(Tuple)
      • 1. 定义
      • 2. 实例:
        • 元组输出的是列表的子集
      • 3. 元组中常用方法
        • .index(element) 返回第一个与制定元素相等的元素的索引
        • .count(要查询内容) 返回列表中该元素出现次数![在这里插入图片描述](https://img-blog.csdnimg.cn/1a264c52bab343c9b7464f8a75176e64.png)
        • 修改元组内容
    • 字典(Dictionary)
      • 1. 定义
      • 2. 实例:
      • 3. 字典中常用方法
        • in和not in方法
        • for 键 in 字典
        • for in 和items()结合使用
        • .keys() 返回一个包含字典所有`键`的视图
        • .values() 返回一个包含字典所有`值`的视图
        • get(key, default):返回指定键的值,如果键不存在,则返回默认值(default)。
        • .pop(key):移除指定键的键值对,并返回键对应的值。
        • .popitem():随机移除并返回一个键值对
        • .update(): 使用其他字典内容更新当前字典
        • .clear():移除字典中的所有键值对。
        • .items() : 用于以键-值对(key-value pairs)
    • 集合(Set)
      • 1. 定义
      • 2. 实例:
      • 3. 集合常用方法
        • .add(element)向集合`随机`添加元素(因为无序所以随机)
        • .remove(element)从集合中删除某元素,如果该集合没有该元素返回错误KeyError
        • .discard(element)从集合中删除某元素,如果该集合没有该元素也不会报错
        • .pop()随机移初一个元素,并返回该元素(集合是无序的,无法确定删除的元素是那个)
        • .clear() 清除集合中所有元素,输出set()
        • .copy():复制一个集合
    • 字符串(String)
      • 1. 定义
      • 2. 实例:
      • 3. 集合常用方法
  • 📚 常用的内置函数
    • 1. print(): 将制定的值输出到控制台
    • 2. len(sequence): 返回序列的长度(元素个数)
    • 3. type(object): 返回对象的类型
    • 4. input('请输入') : 获取用户输入数据
    • 5. range(初值, 终值, 步长)内置函数,返回的是一个可迭代对象。用于创建数字序列
    • 6. int(x)、float(x)、str(x)、bool(x) 等:将输入值转换为整数、浮点数、字符串或布尔值类型。
    • 7. max(iterable)、min(iterable):返回可迭代对象中的最大值和最小值。
    • 8. sum() 返回可迭代对象的和(用于数组类型的对象)
    • 9. abs(x):返回数值的绝对值。
    • 10. round(number, ndigits):将数值四舍五入到指定的小数位数
    • 11. dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表
  • 📚 结合实战练习
    • 1. 列表中in和not in 的使用
    • 练习2 :读取a.txt文件,对每一行使用split()方法拆分为单词列表,对每一行单词进行筛选去重复,添加到新的列表中。最后使用sort()进行排序。(大概意思是提取a.txt中出现过的单词生成一个列表)
      • 1. a.txt文件内容(请忽略内容是什么意思,网上是那个随便找的)
      • 2. 提取单词思路
      • 3. 代码:
      • 4. 输出结果
    • 练习2 :读取一份邮件,获取到邮件中出现过的单词生成字典,并记录每个地址出现过的个数
      • 1. a.txt内容和上一题一样
      • 2. 思路
      • 3. 代码
      • 4. 运行结果
    • 练习3 :在练习2中升级,输出练习2中,单词出现最多的建和键值

📚 几种常见数据结构

列表 (List)

1. 定义

列表是一种有序的可变序列,可以包含不同类型的元素。列表可以通过方括号 [] 来表示,元素之间用逗号分隔

注释: 注意列表可变,字符串不可变,只能改变大小写

2. 实例:

my_list = [1, 'hello', 3.14, True]

3. 列表中常用方法

.append(要添加内容) 向列表末尾添加数据

在这里插入图片描述

.extend(列表) 将可迭代对象逐个添加到列表中

在这里插入图片描述

.insert(索引,插入内容) 向指定位置插入内容

在这里插入图片描述

.remove(删除内容) 删除指定内容

在这里插入图片描述

.pop(索引) 删除指定索引处内容并返回删除内容

在这里插入图片描述

.index(要查询内容) 返回一个与制定元素匹配的索引,不改变原列表

在这里插入图片描述

.count(要查询内容) 返回列表中该元素出现次数

在这里插入图片描述

.sort() 同类型排序(默认升序),不同类型会报错TypeError: ‘<’ not supported between instances of ‘int’ and ‘str’

在这里插入图片描述

.reverse() 反向排序,不分类型

在这里插入图片描述

元组(Tuple)

1. 定义

元组是一种有序的不可变序列,同样可以包含不同类型的元素。元组可以通过圆括号 () 来表示,元素之间用逗号分隔

2. 实例:

my_tuple = (1, 'hello', 3.14, True)

元组输出的是列表的子集

在这里插入图片描述

3. 元组中常用方法

因为元组是不可修改的所以只能查询,如果要修改得先转换成列表进行修改,之后在转换成元组

x = (1,5,'i','j')
# x.sort() #报错 AttributeError: 'tuple' object has no attribute 'sort'
print(x[1]) #输出: 5
x[1] = 6 #报错 TypeError: 'tuple' object does not support item assignment

在这里插入图片描述

.index(element) 返回第一个与制定元素相等的元素的索引

在这里插入图片描述

.count(要查询内容) 返回列表中该元素出现次数在这里插入图片描述

修改元组内容

在这里插入图片描述

字典(Dictionary)

1. 定义

字典是一种键值对的集合,键和值可以是任意的数据类型。字典可以通过花括号 {} 来表示,每个键值对使用冒号 : 分隔,键值对之间用逗号分隔。可做内容修改

a={age:10}
a['age']=18
print(a) #输出 {'age': 18}

字典里边没有顺序 ,列表有从0开始
字典是直接删除重新加入,所以没有顺序

2. 实例:

my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}

3. 字典中常用方法

in和not in方法

a={'age':10,'name':'xiaoming'}
print('name' in a)  #输出 True
print('s' not in a)  #输出 True

for 键 in 字典

可以通过dict(健)=键值

for in 和items()结合使用

for 健,键值 in 字典.items()

a = {'age':10,'name':'xiaoming'}
for (k,v) in a.items():  #()可加可不加
    print(k,v)

print(k,v) 输出:

age 10
name xiaoming

.keys() 返回一个包含字典所有的视图

在这里插入图片描述

.values() 返回一个包含字典所有的视图

在这里插入图片描述

get(key, default):返回指定键的值,如果键不存在,则返回默认值(default)。

在这里插入图片描述

.pop(key):移除指定键的键值对,并返回键对应的值。

在这里插入图片描述

.popitem():随机移除并返回一个键值对

在这里插入图片描述

.update(): 使用其他字典内容更新当前字典

在这里插入图片描述

.clear():移除字典中的所有键值对。

在这里插入图片描述

.items() : 用于以键-值对(key-value pairs)

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
items = my_dict.items()
print(items)

输出: dict_items([(‘name’, ‘Alice’), (‘age’, 25), (‘city’, ‘New York’)])

集合(Set)

1. 定义

集合是一种无序的不重复的元素的集合。集合可以通过花括号 {} 或 set() 函数来创建

2. 实例:

my_set = {1, 2, 3, 4, 5}

3. 集合常用方法

.add(element)向集合随机添加元素(因为无序所以随机)

在这里插入图片描述

.remove(element)从集合中删除某元素,如果该集合没有该元素返回错误KeyError

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

.discard(element)从集合中删除某元素,如果该集合没有该元素也不会报错

在这里插入图片描述

.pop()随机移初一个元素,并返回该元素(集合是无序的,无法确定删除的元素是那个)

在这里插入图片描述

.clear() 清除集合中所有元素,输出set()

在这里插入图片描述

.copy():复制一个集合

在这里插入图片描述

字符串(String)

1. 定义

字符串是一种由字符组成的不可变序列,可以用单引号或双引号括起来

2. 实例:

my_string = 'Hello, World!'

3. 集合常用方法

上篇文章有写,跳转地址python3 0基础学习----基本知识
在这里插入图片描述

📚 常用的内置函数

1. print(): 将制定的值输出到控制台

print('hi~') #输出 hi~

2. len(sequence): 返回序列的长度(元素个数)

在这里插入图片描述

3. type(object): 返回对象的类型

在这里插入图片描述

4. input(‘请输入’) : 获取用户输入数据

在这里插入图片描述

5. range(初值, 终值, 步长)内置函数,返回的是一个可迭代对象。用于创建数字序列

for num in range(5):
    print(num)  # 输出: 0, 1, 2, 3, 4

for num in range(2, 7):
    print(num)  # 输出: 2, 3, 4, 5, 6

for num in range(1, 10, 2):
    print(num)  # 输出: 1, 3, 5, 7, 9

6. int(x)、float(x)、str(x)、bool(x) 等:将输入值转换为整数、浮点数、字符串或布尔值类型。

num1 = int("10")
num2 = float("3.14")
text = str(42)
flag = bool(1)

7. max(iterable)、min(iterable):返回可迭代对象中的最大值和最小值。

my_list = [3, 1, 5, 2, 4]
max_value = max(my_list)
min_value = min(my_list)
print(max_value) #输出 5
print(min_value) #输出 1 

在这里插入图片描述

8. sum() 返回可迭代对象的和(用于数组类型的对象)

在这里插入图片描述

9. abs(x):返回数值的绝对值。

s = abs(-10)
print(s) #输出 10

10. round(number, ndigits):将数值四舍五入到指定的小数位数

rounded_num = round(3.14159, 2)
print(rounded_num) #输出3.14

11. dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表

>>>dir()   #  获得当前模块的属性列表
['__builtins__', '__doc__', '__name__', '__package__', 'arr', 'myslice']
>>> dir([ ])    # 查看列表的方法
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>>

📚 结合实战练习

1. 列表中in和not in 的使用

some = [1,2,3,4,5,6]
print(3 in some) #输出 True
print(3 not in some) #输出 False

练习2 :读取a.txt文件,对每一行使用split()方法拆分为单词列表,对每一行单词进行筛选去重复,添加到新的列表中。最后使用sort()进行排序。(大概意思是提取a.txt中出现过的单词生成一个列表)

1. a.txt文件内容(请忽略内容是什么意思,网上是那个随便找的)

Dear Sir/Madam,

I am writing this email to express my gratitude to you and to discuss
some matters. I hope this email finds you in good health and high
spirits.

Firstly, I would like to sincerely thank you for your generosity and
assistance. I have been facing some difficulties in pursuing my career
goals, and your support has been invaluable to me. Your advice and
guidance have helped me gain a better understanding of the challenges
I have faced and have motivated me to continue striving.

The purpose of this email is to request a meeting with you in order to
personally express my gratitude. I would like the opportunity to
showcase the progress I have made in my professional development and
to hear your valuable insights. If you are willing, I can arrange the
meeting according to your convenience, and the location and date can
be adjusted according to your preferences.

Furthermore, I wanted to inquire if there is anything else I can do
for you. Your generosity may have an impact not only on me personally
but also on other individuals I may be able to assist. Please let me
know if there is anything you need help with, as I would be more than
happy to offer my assistance.

Once again, thank you for your support and generosity, and I hold
great expectations for the future. I sincerely look forward to meeting
with you and expressing my gratitude in person. If you have any
questions or require further information regarding the meeting, please
feel free to contact me.

With heartfelt appreciation,

[Your Name]

2. 提取单词思路

遍历文件每行内容
拆分每行内容为单词列表
遍历当前行列表单词
查找list中是否存在当前单词,存在记录出现个数,不存在新增一条记录

3. 代码:

th = open('a.txt')
print('读取文件内容',th)
lst = list()#空列表
for item in th:
    itemStr = item.rstrip()# 去除末尾空白符号
    pList = itemStr.split()# 以空格作为分隔符分割每行数据,返回一个单词列表  ,例如首行:['Dear', 'Sir/Madam,']
    for word in pList:
         if len(lst)==0:
            lst.append(word)
            continue
         if len(lst)>0:
            if lst.count(word)>0:
                continue
            else:
                lst.append(word)


print('列表长度',len(lst))
lst.sort()
print(lst)

4. 输出结果

在这里插入图片描述

练习2 :读取一份邮件,获取到邮件中出现过的单词生成字典,并记录每个地址出现过的个数

1. a.txt内容和上一题一样

2. 思路

读取文件
声明空字典
遍历文件内容
去掉每行结尾空白符号
切割每行生成单词字典

3. 代码

th = open('a.txt')
dictStr = dict()#空字典
for item in th:
    itemStr = item.rstrip()# 去除末尾空白符号
    pDict = itemStr.split()# 以空格作为分隔符分割每行数据,返回一个单词列表  ,例如首行:['Dear', 'Sir/Madam,']
    for word in pDict:
         dictStr[word] = dictStr.get(word,0)+1 #查找。找到获取对应值+1,没找到默认为0+1
# print(dictStr.items())#items方法,返回可迭代对象的(key,value)
print(sorted([(k,v) for k,v in dictStr.items()]))

4. 运行结果

在这里插入图片描述

练习3 :在练习2中升级,输出练习2中,单词出现最多的建和键值

bigKey = None #最大键
bigValue = None  #最大键值
for k,v in dictStr.items():
    if bigKey is None or v>bigValue: # is判断是否相等,or或
        bigValue = v
        bigKey = k
print(bigKey,':',bigValue)

输出结果:to : 17

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/80454.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

excel快速选择数据、选择性粘贴、冻结单元格

一、如何快速选择数据 在excel中&#xff0c;希望选择全部数据&#xff0c;通常使用鼠标选择数据然后往下拉&#xff0c;当数据很多时&#xff0c;也可单击单元格使用ctrl A选中全部数据&#xff0c;此外&#xff0c;具体介绍另一种方法。 操作&#xff1a;ctrl shift 方向…

ubuntu设置共享文件夹成功后却不显示找不到(已解决)

1.首先输下面命令查看是否真的设置成功共享文件夹 vmware-hgfsclient如果确实已经设置过共享文件夹将输出window下共享文件夹名字 2.确认自己已设置共享文件夹后输入下面的命令 //如果之前没有命令包则先执行sudo apt-get install open-vm-tools sudo vmhgfs-fuse .host:/ /mn…

git版本管理加合并笔记

1.创建空文件夹&#xff0c;右键Bash here打开 2.打开链接&#xff0c;点击克隆下载&#xff0c;复制SSH链接 3.输入git SSH链接 回车 遇到问题&#xff1a; 但明明我已经有权限了&#xff0c; 还是蹦出个这 4.换成https在桌面上进行克隆仓库就正常了 5.去vscode里改东西 …

分布式唯一ID实战

目录 一、UUID二、数据库方式1、数据库生成之简单方式2、数据库生成 - 多台机器和设置步长&#xff0c;解决性能问题3、Leaf-segment 方案实现4、双 buffer 优化5、Leaf高可用容灾 三、基于Redis实现分布式ID四、雪花算法1、雪花算法介绍2、 雪花算法生产环境架构&#xff1a;3…

2017年3月全国计算机等级考试真题(C语言二级)

2017年3月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 每个学校有一名校长&#xff0c;且不同学校的校长可以是同一人&#xff0c;则实体学校和实体校长间的联系是 A. 多对一 B. 多对多 C. 一对一 D. 一对多 正确答案&#xff1a;A 第2题 若有以下定义…

【数理知识】三维空间旋转矩阵的欧拉角表示法,四元数表示法,两者之间的转换,Matlab 代码实现

序号内容1【数理知识】自由度 degree of freedom 及自由度的计算方法2【数理知识】刚体 rigid body 及刚体的运动3【数理知识】刚体基本运动&#xff0c;平动&#xff0c;转动4【数理知识】向量数乘&#xff0c;内积&#xff0c;外积&#xff0c;matlab代码实现5【数理知识】最…

MySQL表的操作

MySQL表的操作 创建表查看表结构的详细信息修改表结构增加表结构属性删除表结构表结构的修改 删除表结构 创建表 语法: create table table_name( field1 datatype [comment xxxxx], field2 datatype [comment xxxxx], field3 datatype [comment xxxxx]) [charsetxxx][collatey…

vscode搭建java开发环境

一、配置extensions环境变量VSCODE_EXTENSIONS 该环境变量路径下的存放安装组件&#xff1a; 二、setting配置文件 {"java.jdt.ls.java.home": "e:\\software\\jdk\\jdk17",// java运行环境"java.configuration.runtimes": [{"name":…

记一次fegin调用的媒体类型问题

1.问题&#xff1a;分页查询&#xff0c;分页参数传递不生效 2.开发环境&#xff1a;fegin接口 开发环境&#xff1a;调用接口 3.修改后&#xff1a;fegin接口不变 调用接口 前端媒体类型&#xff1a; 问题解决&#xff01;&#xff01;&#xff01; 4.原因分析&…

基于libevent的tcp服务器

libevent使用教程_evutil_make_socket_nonblocking_易方达蓝筹的博客-CSDN博客 一、准备 centos7下安装libevent库 yum install libevent yum install -y libevent-devel 二、代码 server.cpp /** You need libevent2 to compile this piece of code Please see: http://li…

架构演进及常用架构

1架构演进及常用架构 1.1单体分层架构 1.2 多应用微服务架构 1.3 分布式集群部署 部署 CDN 节点&#xff1a; 用户访问量的增加意味着用户地域的分散请求&#xff0c;如果所有请求都直接发送中心服务器的话&#xff0c;距离越远&#xff0c;响应速度越差&#xff0c;这时就需…

C语言:深度学习知识储备

目录 数据类型 每种类型的大小是多少呢&#xff1f; 变量 变量的命名&#xff1a; 变量的分类&#xff1a; 变量的作用域和生命周期 作用域&#xff1a; 生命周期&#xff1a; 常量 字符串转义字符注释 字符串&#xff1a; 转义字符 操作符&#xff1a; 算术操作符…

208、仿真-51单片机脉搏心率与心电报警Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&a…

理解持续测试,才算理解DevOps

软件产品的成功与否&#xff0c;在很大程度上取决于对市场需求的及时把控&#xff0c;采用DevOps可以加快产品交付速度&#xff0c;改善用户体验&#xff0c;从而有助于保持领先于竞争对手的优势。 作为敏捷开发方法论的一种扩展&#xff0c;DevOps强调开发、测试和运维不同团…

机器学习重要内容:特征工程之特征抽取

目录 1、简介 2、⭐为什么需要特征工程 3、特征抽取 3.1、简介 3.2、特征提取主要内容 3.3、字典特征提取 3.4、"one-hot"编码 3.5、文本特征提取 3.5.1、英文文本 3.5.2、结巴分词 3.5.3、中文文本 3.5.4、Tf-idf ⭐所属专栏&#xff1a;人工智能 文中提…

衣服材质等整理(时常更新)

参考文章&图片来源 https://zhuanlan.zhihu.com/p/390341736 00. 天然纤维 01. 化学纤维 02. 聚酯纤维&#xff08;即&#xff0c;涤纶&#xff09; 一种由有机二元酸和二元醇通过化学缩聚制成的合成纤维。具有出色的抗皱性和保形性&#xff0c;所制衣物在穿着过程中不容…

解决xss转义导致转码的问题

一、xss简介 人们经常将跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;缩写为CSS&#xff0c;但这会与层叠样式表&#xff08;Cascading Style Sheets&#xff0c;CSS&#xff09;的缩写混淆。因此&#xff0c;有人将跨站脚本攻击缩写为XSS。跨站脚本攻击&#xff…

vue中实现文字检索时候将搜索内容标红

实现结果 html&#xff1a; <div class"searchBox"><span class"bt">标&#8195&#8195题</span><div class"search"><div class"shuru"><!-- <span class"title">生产经营<…

C语言:字符函数和字符串函数

往期文章 C语言&#xff1a;初识C语言C语言&#xff1a;分支语句和循环语句C语言&#xff1a;函数C语言&#xff1a;数组C语言&#xff1a;操作符详解C语言&#xff1a;指针详解C语言&#xff1a;结构体C语言&#xff1a;数据的存储 目录 往期文章前言1. 函数介绍1.1 strlen1.…

[JavaWeb]【六】web后端开发-请求响应

前言&#xff1a;请求响应 目录 一 引子 二 请求 2.1 Postman 2.1.1 安装 2.1.2 创建工作空间 2.1.3 添加接口 2.2 简单参数 2.2.1 原始方式&#xff08;不推荐&#xff09; 2.2.2 SpringBoot方式-GET(参数名与形参变量名相同) 2.2.3 SpringBoot方式-POST(参数名与形参…