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

news2024/7/4 4:26:03

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis查看执行的命令+配置文件命令

1.SLOWLOG LEN 获取 Slowlog 的长度&#xff0c;以确定 Slowlog 中有多少条记录 2.SLOWLOG GET 获取 Slowlog 中的具体记录。你可以使用 SLOWLOG GET 命令来获取第 n 条记录的详细信息&#xff0c;其中 n 是记录的索引&#xff08;从 0 开始&#xff09; 3.如果你想获取多条最…

RFID赋能新能源电池生产的智慧演进

随着全球对可再生能源的需求不断增长&#xff0c;新能源电池作为储能和供电的重要组成部分&#xff0c;正逐渐成为关注的焦点。然而&#xff0c;新能源电池的生产过程中存在着一系列挑战&#xff0c;如追踪和管理电池的生命周期、确保质量和安全等。在这方面&#xff0c;RFID正…

【WPF】 本地化的最佳做法

【WPF】 本地化的最佳做法 资源文件英文资源文件 en-US.xaml中文资源文件 zh-CN.xaml 资源使用App.xaml主界面布局cs代码 App.config辅助类语言切换操作类资源 binding 解析类 实现效果 应用程序本地化有很多种方式&#xff0c;选择合适的才是最好的。这里只讨论一种方式&#…

微信公众平台发布小程序流程

最近因为部署小程序&#xff0c;学习了下如何部署小程序 1. 取消不检验合法域名并上传小程序 建议在小程序上传之前&#xff0c;先取消不校验合法域名并真机调试下。 2. 登录微信公众平台 登录微信公众平台 3. 设置服务器域名 在开放->开发管理->开发设置找到服务器…

Minio知识点+linux下安装+面试总结

一 Minio简介 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口&#xff0c;非常适合于存储大容量非结构化的数据&#xff0c;例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等&#xff0c;而一个对象文件可以是任意大小&…

Word设置只读后,为什么还能编辑?

Word文档设置了只读模式&#xff0c;是可以编辑的&#xff0c;但是当我们进行保存的时候就会发现&#xff0c;word提示需要重命名并选择新路径才能够保存。 这种操作&#xff0c;即使可以编辑文字&#xff0c;但是原文件是不会受到影响的&#xff0c;编辑之后的word文件会保存到…

【Unity小技巧】Unity探究自制对象池和官方内置对象池(ObjectPool)的使用

文章目录 前言不使用对象池使用官方内置对象池应用 自制对象池总结源码参考完结 前言 对象池&#xff08;Object Pool&#xff09;是一种软件设计模式&#xff0c;用于管理和重用已创建的对象。在对象池中&#xff0c;一组预先创建的对象被维护在一个池中&#xff0c;并在需要时…

七夕节送礼物清单,总有一款他/她会喜欢!

马上就要到一年一度的七夕节了&#xff0c;你想好送给对方什么礼物了吗&#xff1f;送礼不一定是贵的好&#xff0c;但一定要表达出自己心意&#xff0c;也有人说&#xff0c;七夕不适合单身狗&#xff0c;其实是错的&#xff0c;单身狗正好可以趁七夕这个浪漫的节日&#xff0…

B站发布财报,正式会员数达2.14亿

KlipC报道&#xff1a;B站公布了截至2023年6月30日的未经审计的财务报告&#xff0c;据数据显示&#xff0c;B站总营收达同比增长8%达53.04亿元人民币&#xff0c;毛利润同比增长66%&#xff0c;其中广告业务收入同比增长36%达16亿人民币。财报发布后&#xff0c;B站美股盘前一…

深度云化时代,什么样的云网络才是企业的“心头好”?

科技云报道原创。 近年来企业上云的快速推进&#xff0c;对云网络提出了更多需求。 最初&#xff0c;云网络只是满足互联网业务公网接入。 随着移动互联网的发展&#xff0c;企业对云上网络安全隔离能力和互访能力、企业数据中心与云上网络互联、构建混合云的能力&#xff0…

骨传导耳机游泳能戴吗?骨传导游泳耳机哪个牌子好?

溽热的夏日&#xff0c;如果能够跳入水中畅游一番&#xff0c;那真的是再好不过了&#xff0c;既能强身健体&#xff0c;又能降温解暑。公共的游泳场馆人声鼎沸&#xff0c;像我这种“社恐”患者&#xff0c;如果在场馆中要待好几个小时&#xff0c;难免会觉得时间漫长&#xf…

韩国半导体巨头库存飙升,存储器市场面临挑战 | 百能云芯

最新财务报告揭示&#xff0c;韩国两大半导体巨头三星和SK海力士面临巨大的库存压力。截至今年6月底&#xff0c;两家公司的半导体库存金额已经飙升至超过50兆韩元&#xff0c;创下历史新高。这不仅显示了存储器市场库存过剩的严峻形势&#xff0c;也暗示着产业复苏步伐不容乐观…

Linux系统调试——valgrind内存泄露检测

代码可能存在内存泄露怎么办&#xff1f; 使用valgrind可以对代码进行内存泄露检测。 valgrind下载安装 下载&#xff1a;https://www.valgrind.org/downloads/ 安装&#xff1a; 1、tar –jxvf valgrind-3.21.0.tar.bz2 2、cd valgrind-3.21.0 3、./configure --prefix/ho…

GBU814-ASEMI逆变器专用整流桥GBU814

编辑&#xff1a;ll GBU814-ASEMI逆变器专用整流桥GBU814 型号&#xff1a;GBU814 品牌&#xff1a;ASEMI 芯片个数&#xff1a;1 封装&#xff1a;GBU-4 恢复时间&#xff1a;&#xff1e;50ns 工作温度&#xff1a;-55C~150C 浪涌电流&#xff1a;200A 正向电流&…

华为AR路由器配置双出口静态IP双链路负载

适用于&#xff1a;有多个以太WAN口的机型。 业务需求&#xff1a; 电信运营商1分配的接口pppoe拨号上网获取地址为116.24.65.19/32。 联通运营商2分配的接口pppoe拨号上网获取地址为10.59.7.238/32。 实现通过pppoe拨号获取动态IP双上行接入Internet&#xff0c;链路1和链…

[USACO1.5] 八皇后 Checker Challenge

题目描述 一个如下的 6 x 6 的跳棋棋盘&#xff0c;有六个棋子被放置在棋盘上&#xff0c;使得每行、每列有且只有一个&#xff0c;每条对角线&#xff08;包括两条主对角线的所有平行线&#xff09;上至多有一个棋子。 上面的布局可以用序列 2 4 6 1 3 5 来描述&#xff0c;第…

由于找不到msvcp120.dll怎么解决?哪个解决方案操作简单

我最近我的电脑遇到了一个问题&#xff0c;运行某些软件的时候出现了一个msvcp120.dll的错误提示。这个错误导致我无法正常运行一些程序&#xff0c;非常影响我的工作和娱乐体验。经过一番搜索和尝试&#xff0c;我最终成功修复了这个问题&#xff0c;现在我把修复方法分享给大…

【学习笔记之vue】使用Nginx运行vue

下载http://nginx.org/en/download.html 下一个稳定版本 加入环境变量 加入path中 在nginx解压路径下输入cmd 或者双击 之后erro显示&#xff1a;80端口冲突 下面我们将80默认启动端口改成90 双击nginx.exe&#xff0c;在浏览器中输入地址http://localhost:90/&#…

物联网设备的分类和功能阐述

物联网是将各种物理设备和传感器通过互联网进行连接和交互的网络&#xff0c;物联网的核心思想是让各种设备能够通过互联网实现智能化、自动化和远程控制。物联网设备是指连接到物联网中的各种设备&#xff0c;可以通过传感器、处理器、通信模块等技术实现与互联网的连接和数据…

中英双语对话大语言模型:ChatGLM-6B

介绍 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&#xff08;INT4 量化级别下最低只需 6GB 显存&#xff09;。…