python返回索引函数 python求索引值

Python 函数 - 返回生成器

如果函数要返回一系列结果,我们常见的方法就是将结果放到一份列表中,然后返回给调用者。比如下面的函数,返回字符串中每个单词的首字母在真个字符串中的索引:

安丘网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联公司自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司

运行结果:

上述的结果完全符合我们的预期,但 get_word_index 函数不够简洁。下面我们尝试使用生成器来实现:

运行结果:

改写之后,不仅运行结果符合要求,由于不需要和 result 列表交互,函数也变得非常简洁。下面我们就来详细学习下生成器吧~

生成器是指使用 yield 表达式的函数,调用生成器函数时,它并不会真的运行,而是会返回迭代器。每次在这个迭代器上面调用内置的 next 函数时,迭代器就会把生成器推进到下一个 yield 表达式那里。生成器传给 yield 的值均会由迭代器返回给调用者。

此外,如果输入量非常大,使用列表作为返回值,那么程序就有可能耗尽内存并崩溃。相反,使用生成器之后,则可以应对任意长度的输入数据。

例如,下面这个生成器函数可以获取文件中单词的索引,而不管文件内容多大,该函数执行时消耗的内存,只由单行的文本长度决定:

其中 test_generator.txt 中的内容如下:

运行结果:

下面这句话特别重要: 生成器函数返回的迭代器,是由状态的,及调用者不应该反复使用它 。我们那 word_index_iter 来说明:

如果想重复调用,请将其封装成容器:

运行结果:

关于上述自定义容器的实现原理,我的另外一篇文章做了详细介绍,链接奉上:

python find( )方法

Python中的find( )方法

用于检验字符串是否包含子字符串str,如果已指定beg和end范围,则检验将在制定范围内。

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

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

str——指定检索的字符串

beg——开始索引,默认为0

end——结束索引,默认为字符串的长度

find()函数找不到时返回为-1。

Python求解答过程

第11题

因为取字符串TempStr的从TempStr[3]到TempStr[-2]的字符,

这里的下标都是从0开始,Python的数学取值区间都是[3,-1)半开区间,

因此取值范围是[3,-2],运行结果是3.14159

第13题

这是一个求400到500间的水仙花数的程序,水仙花数是指各个数位上的数的3次方的和等于这个数本身的3位数,

变量i是取这个3位数的百位上的数字,变量j是取这个3位数的十位上的数字,变量k是取这个3位数的个位上的数字,

如果这个数等于各个数位上的数的3次方的和,则打印这个数,在400到500中水仙花数只有407.

你也可以用4*4*4+0*0*0+7*7*7=64+0+343=407来判断答案是A,408不满足上述条件,153和159不在400到500范围内

第43题

Python中的list中的index函数是返回字符串's'在list中的索引位置(Python的索引下标都是从0开始),后面的5和10,是可选项表示查找从下标5到下标10的范围,

因为Python都是半开区间,所以实际范围为[5,9]区间,所以在"ky is"中查找's',其索引位置在整个字符串中是9,返回打印9

绕晕大多数Python初学者的argsort()函数

使用python做机器学习的一般都是从k-近邻算法开始学习。

这就很难绕开argsort()函数,但是在使用argsort()函数时大部分初学者都会被绕晕进去。

argsort()函数是用来返回数组值从小到大索引值的。举例

那么

下面讲一下详细逻辑:

我们把矩阵a从小到大排序,记排序后的矩阵为b:

矩阵a和b的关系:

所以a.argsort(),也就是a排序后索引值就是[1,2,0]

PS:索引值相当于页数,是一个排序值,不等于元素的值。

像书的目录一样,对于例子中的矩阵,我们有如下索引:

6............0

4............1

5............2

所以排序后b=[4,5,6],用索引值来表达就是[1,2,0]

python列表排序并返回索引

numpy中有函数argsort来返回排序后的下标

结果

pytorch中的torch.sort本身就能返回排序后的下标

Python中没有直接调用的接口,怎么办呢?

用enumerate再排序就可以了

结果


分享文章:python返回索引函数 python求索引值
网站路径:http://azwzsj.com/article/hjdjdd.html