首页 > 编程语言 >Python每日三道经典面试题(九)

Python每日三道经典面试题(九)

时间:2024-03-14 18:30:45浏览次数:27  
标签:面试题 string Python 三道 生成器 re 字符串 替换

1.解释re模块的split()、sub()、subn()方法?

Python的re模块提供了强大的字符串处理能力,主要用于字符串的搜索、匹配、替换和拆分等操作。其中split()sub()subn()re模块中常用的几个方法,用于字符串的拆分和替换。

split() 方法

  • 功能split()方法用于按照匹配的模式分割字符串。
  • 语法re.split(pattern, string, maxsplit=0, flags=0)
  • 参数
    • pattern:分割字符串时使用的正则表达式。
    • string:要分割的原始字符串。
    • maxsplit:分割的最大次数,默认为0,表示不限制次数。
    • flags:正则表达式的匹配标志,如re.IGNORECASE
  • 返回值:返回分割后的字符串列表。

示例

import re
result = re.split('\W+', 'Words, words, words.')
print(result)  # ['Words', 'words', 'words', '']

sub() 方法

  • 功能sub()方法用于替换字符串中的匹配项。
  • 语法re.sub(pattern, repl, string, count=0, flags=0)
  • 参数
    • pattern:正则表达式模式。
    • repl:替换匹配项的字符串或一个函数。
    • string:要被搜索和替换的原始字符串。
    • count:最大替换次数,默认为0,表示替换所有匹配项。
    • flags:正则表达式的匹配标志。
  • 返回值:返回替换后的字符串。

示例

import re
result = re.sub('\s+', '-', 'Hello world, Python is cool')
print(result)  # 'Hello-world,-Python-is-cool'

subn() 方法

  • 功能subn()方法与sub()相似,不仅返回替换后的字符串,还返回替换的次数。
  • 语法re.subn(pattern, repl, string, count=0, flags=0)
  • 参数:与sub()方法相同。
  • 返回值:返回一个包含替换后的字符串和替换次数的元组。

示例

import re
result = re.subn('\s+', '-', 'Hello world, Python is cool')
print(result)  # ('Hello-world,-Python-is-cool', 3)

这三个方法在文本处理中非常有用,可以进行复杂的字符串匹配、拆分和替换操作。通过正确使用正则表达式,可以灵活地处理各种字符串任务。

2.Python中的生成器是什么?

在Python中,生成器(Generator)是一种用于创建迭代器的简单而强大的工具。生成器函数使用yield语句返回数据,在每次迭代中,生成器只产生(yield)一个值,而不是一次性返回所有值,这意味着生成器不需要在开始迭代之前将所有元素都生成好并保存在内存中。这种按需生成(懒加载)的特性使得生成器特别适用于处理大数据集,因为它们可以在不消耗大量内存的情况下进行迭代。

特性

  • 节省内存:生成器逐个产生值,从而避免了一次性加载整个数据集到内存中的需求。
  • 惰性求值:生成器在迭代到某个特定点时才会生成那个点的数据,这就是所谓的惰性求值。
  • 可迭代对象:生成器是一种可迭代对象(Iterable),可以使用for循环来遍历它们产生的值。

创建生成器

生成器可以通过两种方式创建:

  1. 生成器函数:使用常规的def语句定义函数,但使用yield语句返回数据。当函数执行到yield时,函数的状态会被暂停,并保存所有变量状态,直到下一次迭代继续执行。
  2. 生成器表达式:类似于列表推导式,但使用圆括号而不是方括号。这种方式更加简洁,适用于简单的迭代生成。

示例

生成器函数
def count_down(n):
    while n > 0:
        yield n  # 产生一个值
        n -= 1

# 使用生成器
for i in count_down(5):
    print(i)

输出:

5
4
3
2
1
生成器表达式
squares = (x*x for x in range(5))
for num in squares:
    print(num)

输出:

0
1
4
9
16

总结

生成器提供了一种高效的方式来处理大量数据或可能无限的数据集,因为它们允许按需计算每个元素,从而降低了程序的内存消耗。生成器的惰性求值特性使其在处理数据流和序列化操作中非常有用。

3.如何使用索引来反转Python中的字符串?

在Python中,可以通过使用切片操作的步长参数(stride)为-1来反转字符串。具体语法是[start:stop:step],其中step为-1时,表示从后向前选取字符。如果不指定startstop,则默认遍历整个字符串。

示例

# 定义一个字符串
original_string = "Python"

# 使用切片操作反转字符串
reversed_string = original_string[::-1]

# 打印结果
print(reversed_string)

这将输出:

nohtyP

这种方法简洁且效率高,非常适合用于字符串反转操作。由于字符串是不可变类型,这个过程实际上创建了一个新的字符串对象。

标签:面试题,string,Python,三道,生成器,re,字符串,替换
From: https://blog.csdn.net/Zuourple/article/details/136718435

相关文章

  • 想零基础转行Python开发,怎么学习呢?
    转行零基础学Python编程开发难度大吗?从哪学起?近期很多小伙伴问我,如果自己转行学习Python,完全0基础能否学会呢?Python的难度到底有多大?今天,小编就来为大家详细解读一下这个问题。学习Python编程难吗?首先,我们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了......
  • 使用Python构建强大的网络爬虫
    介绍网络爬虫是从网站收集数据的强大技术,而Python是这项任务中最流行的语言之一。然而,构建一个强大的网络爬虫不仅仅涉及到获取网页并解析其HTML。在本文中,我们将为您介绍创建一个网络爬虫的过程,这个爬虫不仅可以获取和保存网页内容,还可以遵循最佳实践。无论您是初学者还是......
  • 软件测试|使用Python绘制雷达图
    前言之前用matplotlib绘制了雷达图,可能代码量会相对多一些,今天我想起了我们之前介绍过的pyecharts,这个绘图神器,也是支持绘制雷达图的,今天我们来看看实现起来会不会更简单。我们还是以买车的朋友选择来作为我们的数据进行绘制。 绘制基础雷达图pyecharts支持绘制的图形中就包......
  • Python实现BOA蝴蝶优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景蝴蝶优化算法(butterflyoptimizationalgorithm,BOA)是Arora等人于2019年提出的一种元启发式智能算法。该算法受到了蝴蝶觅食和交配行为的启发,......
  • Python实现BOA蝴蝶优化算法优化循环神经网络回归模型(LSTM回归算法)项目实战
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景蝴蝶优化算法(butterflyoptimizationalgorithm,BOA)是Arora等人于2019年提出的一种元启发式智能算法。该算法受到了蝴蝶觅食和交配行为的启发,......
  • python内置函数 D
    python内置函数DPython解释器内置了很多函数和类型,任何时候都能使用。D名称描述delattr删除对象的属性。dict创建字典对象。dir列出对象的属性。divmod同时执行除法运算和取模运算,返回一个包含商和余数的元组。delattr(object,name)delattr()是一个内置函数,用于删除......
  • 入门必看:写给 Python 小伙伴的一些建议
    写在前面不知不觉作为一名Python开发工程师也有好几年的时间了,对于Python总想写点总结,却又不知从何开始。随着公司项目不断转向Java,我隐约的觉得Python的生涯也将迎来终结,所以近期抽个空下这篇关于Python的一些总结。正文开始先看一个Python3CheatSheet,忘了......
  • 【2024-完整版】python爬虫 批量查询自己所有CSDN文章的质量分:附整个实现流程
    【2024】批量查询CSDN文章质量分写在最前面一、分析获取步骤二、获取文章列表1.前期准备2.获取文章的接口3.接口测试(更新重点)三、查询质量分1.前期准备2.获取文章的接口3.接口测试四、python代码实现1.分步实现2.批量获取文章信息3.从excel中读取文章url,查询......
  • 自学Python第一步,记住这7大编码规范
    一、缩进每一级缩进4个空格。续行应该与包裹元素对齐,要么使用圆括号,方括号,花括号内的隐式行连接来垂直对齐,要么使用挂行缩进对齐。当使用挂行缩进对齐时,应该考虑到第一行不应该有参数,以及使用缩进以区分自己是续行。对齐缩进(左右括号对齐)deflong_function_name(var_......
  • Python 中 Panda 库 处理表格方法
    1.导入Pandas库importpandasaspd2.创建DataFrame对象#从列表创建data=[['Alice',25],['Bob',30],['Charlie',35]]df=pd.DataFrame(data,columns=['Name','Age'])#从字典创建data={'Name':[&#......