首页技术python find()函数的功能和用法(python变量命名规则)

python find()函数的功能和用法(python变量命名规则)

编程之家2026-06-09629次浏览

老铁们,大家好,相信还有很多朋友对于python find()函数的功能和用法和python变量命名规则的相关问题不太懂,没关系,今天就由我来为大家分享分享python find()函数的功能和用法以及python变量命名规则的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

python find()函数的功能和用法(python变量命名规则)

python 里 find函数怎么用

find函数是Python中的字符串函数之一,用于在字符串中查找子串,并返回其第一次出现的位置。该函数定义如下:

`str.find(sub[, start[, end]])`

其中,str为要查找的字符串,sub为要查找的子串,start和end为可选参数,指定查找的起始位置和终止位置。如果找到子串,函数返回其第一次出现的位置,否则返回-1。

使用find函数非常简单,可以通过以下方式调用:

``` python

str='hello, world!'

python find()函数的功能和用法(python变量命名规则)

print(str.find('l'))#返回第一个'l'的位置

print(str.find('x'))#返回-1

```

从上面的示例可以看出,find函数只返回子串第一次出现的位置,而不是所有出现的位置。如果想要查找所有的位置,需要使用正则表达式等其他方法。

与其他字符串搜索函数对比,find函数有什么优势:

1、find函数和index函数都可以用于查找子串,但如果找不到子串,find函数会返回-1,而index函数会抛出ValueError异常,这个区别在实际应用中非常重要。

python find()函数的功能和用法(python变量命名规则)

2、find函数和count函数都可以用于查找子串出现的次数,但find函数只返回第一次出现的位置,需要进行逐个查找才能知道出现的次数,而count函数会直接返回出现的次数,效率更高。

3、find函数和re模块可以一起使用,实现更复杂的字符串搜索功能,而re模块更适合于匹配模式比较复杂的情况。

find在python中的用法

Python的find函数多用在字符串的处理上,也是Python计算机二级的小考点。

定义:Python find()方法检测字符串中是否包含子字符串 str,如果指定 beg(开始)和 end(结束)范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。

语法

str.find(str, beg=0, end=len(string))

参数

str---a指定检索的字符串

beg---开始检索,默认为0

end---结束检索,默认为字符串的长度

返回值

如果包含子字符串返回开始的索引值,否则返回-1。

二、find函数的详细函数使用解释

第一个例子(tips:可以复制代码到idle里边,然后自己运行着看,这个看不懂可以再看看第二个例子,结合着理解)

str="abcdefa"

print(str.find("a"))#从下标0开始,查找在字符串里第一个出现的子串,返回结果

print(str.find("a",1))#从下标1开始,查找在字符串里第一个出现的子串:返回结果6

print(str.find("7"))#查找不到返回-1

第二个例子(tips:可以把代码沾到idle中,运行然后对照着我的下边的解答看)

str="hello Best wishes to you";

str1="to";

print(str.find(str1))

print(str.find(str1,10))

print(str.find(str1,18))

print(str.find(str1,19))

print(str.find(str1,17,19))

print(str.find(str1,17,20))

print(str.find(str1,18,20))

第一个从字符h(下标为0)开始数起,一直到检索到t停止,一直检索过来,是18个字符串

所以首先,第一个print结果为18

第二个从第10个字符串开始数起,只要后面有to这个字符,那么就返回开始的索引值,也就是18

第三个从第18个字符串开始数起,刚好落在t字符串上,从t开始检索,那往后开始检索肯定没问题,继续返回18

第四个从第19个字符串开始数起,也就是to的o后面的空格,从空格往后检索,那么就没有想要的内容了,所以返回-1

第五个print里边我添加了end的参数,因为直接定位在19,所以相当于o检索不上,所以输出-1

第六个print我更改end为20,这时候就可以正常输出了

第七个print里边我把17改为18,19改为20,依然可以输出,理由同上,举6反1。

Python中的“迭代”详解

迭代器模式:一种惰性获取数据项的方式,即按需一次获取一个数据项。

所有序列都是可以迭代的。我们接下来要实现一个 Sentence(句子)类,我们向这个类的构造方法传入包含一些文本的字符串,然后可以逐个单词迭代。

接下来测试 Sentence实例能否迭代

序列可以迭代的原因:

iter()

解释器需要迭代对象 x时,会自动调用iter(x)。

内置的 iter函数有以下作用:

由于序列都实现了 __getitem__方法,所以都可以迭代。

可迭代对象:使用内置函数 iter()可以获取迭代器的对象。

与迭代器的关系:Python从可迭代对象中获取迭代器。

下面用for循环迭代一个字符串,这里字符串'abc'是可迭代的对象,用 for循环迭代时是有生成器,只是 Python隐藏了。

如果没有 for语句,使用 while循环模拟,要写成下面这样:

Python内部会处理 for循环和其他迭代上下文(如列表推导,元组拆包等等)中的 StopIteration异常。

标准的迭代器接口有两个方法:

__next__:返回下一个可用的元素,如果没有元素了,抛出 StopIteration异常。

__iter__:返回 self,以便在需要使用可迭代对象的地方使用迭代器,如 for循环中。

迭代器:实现了无参数的 __next__方法,返回序列中的下一个元素;如果没有元素了,那么抛出 StopIteration异常。Python中的迭代器还实现了 __iter__方法,因此迭代器也可以迭代。

接下来使用迭代器模式实现 Sentence类:

注意,不要在 Sentence类中实现 __next__方法,让 Sentence实例既是可迭代对象,也是自身的迭代器。

为了“支持多种遍历”,必须能从同一个可迭代的实例中获取多个独立的迭代器,而且各个迭代器要能维护自身的内部状态,因此这一模式正确的实现方式是,每次调用 iter(my_iterable)都新建一个独立的迭代器。

所以总结下来就是:

实现相同功能,但却符合 Python习惯的方式是,用生成器函数代替 SentenceIteror类。

只要 Python函数的定义体中有 yield关键字,该函数就是生成器函数。调用生成器函数,就会返回一个生成器对象。

生成器函数会创建一个生成器对象,包装生成器函数的定义体,把生成器传给 next(...)函数时,生成器函数会向前,执行函数定义体中的下一个 yield语句,返回产出的值,并在函数定义体的当前位置暂停,。最终,函数的定义体返回时,外层的生成器对象会抛出 StopIteration异常,这一点与迭代器协议一致。

如今这一版 Sentence类相较之前简短多了,但是还不够慵懒。惰性,是如今人们认为最好的特质。惰性实现是指尽可能延后生成值,这样做能节省内存,或许还能避免做无用的处理。

目前实现的几版 Sentence类都不具有惰性,因为 __init__方法急迫的构建好了文本中的单词列表,然后将其绑定到 self.words属性上。这样就得处理整个文本,列表使用的内存量可能与文本本身一样多(或许更多,取决于文本中有多少非单词字符)。

re.finditer函数是 re.findall函数的惰性版本,返回的是一个生成器,按需生成 re.MatchObject实例。我们可以使用这个函数来让 Sentence类变得懒惰,即只在需要时才生成下一个单词。

标准库提供了很多生成器函数,有用于逐行迭代纯文本文件的对象,还有出色的 os.walk函数等等。本节专注于通用的函数:参数为任意的可迭代对象,返回值是生成器,用于生成选中的、计算出的和重新排列的元素。

第一组是用于过滤的生成器函数:从输入的可迭代对象中产出元素的子集,而且不修改元素本身。这种函数大多数都接受一个断言参数(predicate),这个参数是个布尔函数,有一个参数,会应用到输入中的每个元素上,用于判断元素是否包含在输出中。

以下为这些函数的演示:

第二组是用于映射的生成器函数:在输入的单个/多个可迭代对象中的各个元素上做计算,然后返回结果。

以下为这些函数的用法:

第三组是用于合并的生成器函数,这些函数都可以从输入的多个可迭代对象中产出元素。

以下为演示:

第四组是从一个元素中产出多个值,扩展输入的可迭代对象。

以下为演示:

第五组生成器函数用于产出输入的可迭代对象中的全部元素,不过会以某种方式重新排列。

下面的函数都接受一个可迭代的对象,然后返回单个结果,这种函数叫“归约函数”,“合拢函数”或“累加函数”,其实,这些内置函数都可以用 functools.reduce函数实现,但内置更加方便,而且还有一些优点。

参考教程:

《流畅的python》 P330- 363

好了,文章到此结束,希望可以帮助到大家。

S27赛季几号开始几号结束 S17赛季结束为啥没钻石strcpy(str1,strcpy(a+1,b+2)