暑假学习数据结构及简单算法(第一天)

我现在情况的大致介绍,现在是大二结束的暑假,我学的是计算机科学与技术专业,已经学了C、C++(对象学得不是很好)、python、数据结构(C++)、数据库等课程,准备在暑假用python再学一遍数据结构,所以简单的python基础就不会再学一遍,主要是查缺补漏、在python中实现数据结构及简单算法。

一、学习工具的简单介绍

  • 代码工具:PyCharm 2021.1.3 (Community Edition)
  • 参考书籍:数据结构与算法(python语言实现)参考书籍

二、开始学习(复习)

2.1 python对象

python的内置类,整数类int,浮点类float,字符串类str,布尔类bool,列表类list,元组类tuple,字典类dict,集合色set。(以前不知道在python里面的数据类型大多数是类。)

2.2 python常用的内置函数

这里只是简单列举,以后用的时候详细说明

abs() :返回数字的绝对值
ord()/chr():字符及其数字编码
slice() :实现切片对象
range():返回一个可迭代对象(类型是对象),常与list连用,生成列表
sorted() :对所有可迭代的对象进行排序操作
format :用来格式化字符串
eval() :用来执行一个字符串表达式,并返回表达式的值
map():根据提供的函数对指定序列做映射
type() :返回对象的类型
enumerate() :用于将一个可遍历的数据对象(如列表)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
round():返回浮点数 x 的四舍五入值,准确的说保留值将保留到离上一位更近的一端(四舍六入),精度不高
zip():用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
不是很常见
help():用于查看函数或模块用途的详细说明
next() :返回迭代器的下一个项目
id() :用于获取对象的内存地址
exec :执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。

用map和zip函数举个例子(常见的要求从输入得到两个数字用空格隔开):

n, m = map(int, input().split())
a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7, 8]
zipped = zip(a, b)  # 返回一个对象
print(zipped)  # <zip object at 0x0000023F9859A180>
print(list(zipped))  # [(1, 4), (2, 5), (3, 6)]
print(list(zip(a, c)))  # 元素个数与最短的列表一致[(1, 4), (2, 5), (3, 6)]
a1, a2 = zip(*zip(a, b))  # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
print(list(a1))
print(list(a2))

2.3 迭代器和生成器

2.3.1 迭代是是访问集合元素的一种方式。 **迭代器只能往前不会后退。**迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器有两个基本的方法:iter() —— 创建迭代器和 next() —— 使用迭代器。
创建迭代器:

import sys  # 引入 sys 模块
list1 = [1, 2, 3, 4]
it = iter(list1)  # 创建迭代器对象
while True:
    try:
        print(next(it))
    except StopIteration:	#StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况
        sys.exit()

2.3.2生成器
在 Python 中,使用了 yield 的函数被称为生成器(generator)。生成器是一个返回迭代器的函数,只能用于迭代操作,简单理解生成器就是一个迭代器。在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。调用一个生成器函数,返回的是一个迭代器对象。

import sys
def fibonacci(n):  # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if counter > n:
            return
        yield a
        a, b = b, a + b
        counter += 1

f = fibonacci(10)  # f 是一个迭代器,由生成器返回生成

while True:
    try:
        print(next(f), end=" ")
    except StopIteration:
        sys.exit()

2.4 文件读写

2.4.1 打开并读入文件,如

f = open('sample.txt', 'r',encoding='utf-8')
f1 = f.read()
print(f1)

2.4.2 打开并写文件,如

f2 = open('sample.txt', 'w', encoding='utf-8')
f2.write('zhn love gcd')

2.5 部分截图

2.2zip函数

2.3

2.3
2.4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值