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, 4for num in range(2, 7):print(num)  # 输出: 2, 3, 4, 5, 6for 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)continueif len(lst)>0:if lst.count(word)>0:continueelse: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 = vbigKey = k
print(bigKey,':',bigValue)

输出结果:to : 17

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot(六十四):SpringBoot集成Gzip压缩数据

1 实现思路 2 实现 2.1 创建springboot项目 2.2 编写一个接口,功能很简单就是传入一个Json对象并返回 package com.example.demo.controller;import com.example.demo.entity.Advertising; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframewo…

注册中心/配置管理 —— SpringCloud Consul

Consul 概述 Consul 是一个可以提供服务发现&#xff0c;健康检查&#xff0c;多数据中心&#xff0c;key/Value 存储的分布式服务框架&#xff0c;用于实现分布式系统的发现与配置。Cousul 使用 Go 语言实现&#xff0c;因此天然具有可移植性&#xff0c;安装包仅包含一个可执…

JRebel插件扩展-mac版

前言 上一篇分享了mac开发环境的搭建&#xff0c;但是欠了博友几个优化的债&#xff0c;今天先还一个&#xff0c;那就是idea里jRebel插件的扩展。 一、场景回眸 这个如果在win环境那扩展是分分钟&#xff0c;一个exe文件点点就行。现在在mac环境就没有这样的dmg可以执行的&…

时序预测 | MATLAB实现WOA-CNN-BiGRU鲸鱼算法优化卷积双向门控循环单元时间序列预测

时序预测 | MATLAB实现WOA-CNN-BiGRU鲸鱼算法优化卷积双向门控循环单元时间序列预测 目录 时序预测 | MATLAB实现WOA-CNN-BiGRU鲸鱼算法优化卷积双向门控循环单元时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 时序预测 | MATLAB实现WOA-CNN-BiGRU鲸…

XSS 跨站脚本攻击

XSS(DOM) XSS 又称CSS(Cross Site Scripting)或跨站脚本攻击&#xff0c;攻击者在网页中插入由JavaScript编写的恶意代码&#xff0c;当用户浏览被嵌入恶意代码的网页时&#xff0c;恶意代码将会在用户的浏览器上执行。 XSS攻击可分为三种&#xff1a;分别为反射型(Reflected…

中华儿慈会爱健康专项基金“爱的对焦”公益项目落地广西南宁

爱护我们的眼睛&#xff0c;让世界更“睛”彩。中华少年儿童救助慈善基金会爱健康专项基金携手爱心企业郑州科瑞医疗在广西南宁市西乡塘区衡阳北社区小区居民心灵驿站隆重举行了“爱的对焦”公益项目青少年近视防控爱心服务站授牌仪式。 中华儿慈会副秘书长卫中、广西壮族自治…

【3Ds Max】车削命令的简单使用(以制作花瓶为例)

简介 在3ds Max中&#xff0c;"车削"&#xff08;Lathe&#xff09;是一种建模命令&#xff0c;用于创建围绕轴线旋转的几何形状。通过车削命令&#xff0c;您可以将一个闭合的平面或曲线几何形状旋转&#xff0c;从而生成一个立体对象。这种方法常用于创建圆柱体、…

Azure共享映像库构建VM镜像

什么是Azure共享映像库 Azure共享映像库是一项在Microsoft Azure中以共享方式存储和管理映像的服务。映像是预配置的虚拟机操作系统和应用程序的快照&#xff0c;可以用来创建多个虚拟机实例。通过将映像存储在共享映像库中&#xff0c;用户可以轻松地共享映像给其他Azure订阅…

Rust语法:所有权引用生命周期

文章目录 所有权垃圾回收管理内存手动管理内存Rust的所有权所有权转移函数所有权传递 引用与借用可变与不可变引用 生命周期悬垂引用函数生命周期声明结构体的生命周期声明Rust生命周期的自行推断生命周期约束静态生命周期 所有权 垃圾回收管理内存 Python&#xff0c;Java这…

【算法挨揍日记】day03——双指针算法_有效三角形的个数、和为s的两个数字

611. 有效三角形的个数 611. 有效三角形的个数https://leetcode.cn/problems/valid-triangle-number/ 题目描述&#xff1a; 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 解题思路&#xff1a; 本题是一个关于三角形是否能成立…

【Diffusion】李宏毅2023机器学习Diffusion笔记

文章目录 1 想法概述2 实际过程阶段1 Add Noise阶段2 Denoise 3 数学原理4 为什么推理时要额外加入noise5 一些不知道对不对的Summary 1 想法概述 从一张充满噪声的图中不断denoise&#xff0c;最终得到一张clear的图片。为了确定当前图片中噪声占比的大小&#xff0c;同时输入…

42.SpringBoot—原理篇

一、SpringBoot原理篇。 &#xff08;1&#xff09;自动配置。 &#xff08;1.1&#xff09;bean加载方式。 &#xff08;1.1.1&#xff09;xml方式。(适用自定义bean与第三方bean&#xff09; &#xff08;1.1.2&#xff09;注解方式组件扫描。(适用于自定义bean&#xff…

【3Ds Max】布料命令的简单使用

简介 在3ds Max中&#xff0c;"布料"&#xff08;Cloth&#xff09;是一种模拟技术&#xff0c;用于模拟物体的布料、织物或软体的行为&#xff0c;例如衣物、帆布等。通过应用布料模拟&#xff0c;您可以模拟出物体在重力、碰撞和其他外力作用下的变形和动态效果。…

C#系统锁屏事件例子 - 开源研究系列文章

今天有个网友问了个关于操作系统锁屏的问题。 我们知道&#xff0c;操作系统是基于消息和事件处理的&#xff0c;所以我们只要找到该操作系统锁屏和解屏的那个事件&#xff0c;然后在事件里进行处理即可。下面是例子介绍。 1、 项目目录&#xff1b; 下面是项目目录&#xff1a…

【BUG】docker安装nacos,浏览器却无法访问到页面

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…

基于SSH框架实现的管理系统(包含java源码+数据库)

资料下载链接 介绍 基于SSH框架的管理系统 简洁版 &#xff1b; 实现 登录 、 注册 、 增 、 删 、 改 、 查 &#xff1b; 可继续完善增加前端、校验、其他功能等&#xff1b; 可作为 SSH&#xff08;Structs Spring Hibernate&#xff09;项目 开发练习基础模型&#xf…

前端打开后端返回的HTML格式的数据

前端打开后端返回的 HTML格式 的数据&#xff1a; 后端返回的数据格式如下示例&#xff1a; 前端通过 js 方式处理&#xff08;核心代码如下&#xff09; console.log(回调, path); // path 是后端返回的 HTML 格式数据// 必须要存进localstorage&#xff0c;否则会报错&am…

centos下使用jemalloc解决Mysql内存泄漏问题

参考&#xff1a; MySQL bug&#xff1a;https://bugs.mysql.com/bug.php?id83047&tdsourcetags_pcqq_aiomsg https://github.com/jemalloc/jemalloc/blob/dev/INSTALL.md &#xff08;1&#xff09;ptmalloc 是glibc的内存分配管理 &#xff08;2&#xff09;tcmalloc…

如何做好科技文献资料的翻译!

我们知道&#xff0c;科技文献是工程技术人员的重要参考文献&#xff0c;翻译科技文献资料有助于促进国内外科技知识和技术的传播。那么&#xff0c;如何做好科技文献资料的翻译&#xff0c;专业科技文献翻译哪家好&#xff1f; 据了解&#xff0c;科技文献翻译是一种以应用为主…

迈向通用听觉人工智能!清华电子系、火山语音携手推出认知导向的听觉大语言模型SALMONN

日前&#xff0c;清华大学电子工程系与火山语音团队携手合作&#xff0c;推出认知导向的开源听觉大语言模型SALMONN (Speech Audio Language Music Open Neural Network)。 大语言模型 SALMONN LOGO 相较于仅仅支持语音输入或非语音音频输入的其他大模型&#xff0c;SALMONN对…