• 关于 python 索引 的搜索结果

问题

python怎么索引

云计算小粉 2019-12-01 20:03:34 1453 浏览量 回答数 1

问题

python索引怎么做

云计算小粉 2019-12-01 20:03:06 455 浏览量 回答数 1

回答

python 数据源 ,  主索引+增量索引 =你用在千万级数据上试过没。。, 而且搜索量非常大 是访问量的2-3倍 mongo做千万级应用准备最少上半个机柜大内存机吧 sphinx不能直接支持mongodb的。我们之前是用python来建立sphinx和mongodb之间的数据接口。sphinx索引完成之后,搜索动作时在sphinx自身的索引文件上完成的,不涉及的对数据库的搜索了。然后php再根据sphinx给出的id去读mongodb就可以了,怎么会出现断开什么的? 不过python去读mongodb的速度肯定要比sphinx自己直接读mysql要慢,有实力的话可以自己用c写个接口。 mongo做千万级应用准备最少上半个机柜大内存机吧 sphinx不能直接支持mongodb的。我们之前是用python来建立sphinx和mongodb之间的数据接口。sphinx索引完成之后,搜索动作时在sphinx自身的索引文件上完成的,不涉及的对数据库的搜索了。然后php再根据sphinx给出的id去读mongodb就可以了,怎么会出现断开什么的? 不过python去读mongodb的速度肯定要比sphinx自己直接读mysql要慢,有实力的话可以自己用c写个接口。 估计sphinx要分布式,mongodb性能影响应该会小一点。。。 sphinx做raid主要提升磁盘速度吧。 sphinx不能直接支持mongodb的。我们之前是用python来建立sphinx和mongodb之间的数据接口。sphinx索引完成之后,搜索动作时在sphinx自身的索引文件上完成的,不涉及的对数据库的搜索了。然后php再根据sphinx给出的id去读mongodb就可以了,怎么会出现断开什么的? 不过python去读mongodb的速度肯定要比sphinx自己直接读mysql要慢,有实力的话可以自己用c写个接口。 python+sphinx+mongodb以前也这样做过。。千万级!!没试过。 另外给sphinx做缓存。。还有有其它方法?? 把所有的查询结果放到memcache里面啊,如果不存在数据过期或者更新的话;还可以试试把sphinx的index文件放到/dev/shm里面,做好重启后重新索引的脚本就是了。 ######做二次缓存也可。。 应该大部分消耗在sphinx上吧。。 如果同时缓存mongodb中的文本数据的话,内存占用大了。所以只缓存sphinx的数据。######就是"你可以直接把所有的查询结果放到memcache里面" mongo做千万级应用准备最少上半个机柜大内存机吧

一枚小鲜肉帅哥 2020-06-20 19:33:10 0 浏览量 回答数 0

新手开公司,教你化繁为简

开公司到底有没有那么难,传统的手续繁琐,线下跑断腿,场地搞不定等问题,通过阿里云”云上公司注册“解决你的烦恼。

回答

索引的使用请用索引取出下面list的指定元素:L = [    ['Apple','google','Microsoft'],    ['Java','Python','Ruby','PHP'],    ['Adam','Bart','Lisa']]打印Apple:print(?)打印Python:print(?)打印Lisa:print(?)code:索引的使用L = [['Apple','google','Microsoft'], ['Java','Python','Ruby','PHP'], ['Adam','Bart','Lisa']]print('打印Apple:')print(L0)print('打印Python:')print(L1)print('打印Lisa:')print(L2)

寒喵 2019-12-02 01:08:55 0 浏览量 回答数 0

问题

python怎么获取列表元素的索引

云计算小粉 2019-12-01 20:02:26 2039 浏览量 回答数 1

问题

将python字符串拆分为分隔符但是特定的分隔符

一码平川MACHEL 2019-12-01 19:31:57 694 浏览量 回答数 1

回答

在开始和结束算法方面,我们决定遵循Python。 0 指定第一个元素(一如既往),并 ^0 指定“ length'th”元素,即紧接末端的元素。这样,您将获得一个简单的关系,其中元素从开始位置的位置加上其从结束位置的位置等于长度。 如果您自己进行数学运算,则 x in ^x是从长度中减去的值。 为什么不使用减号(-)而不是新的hat(^)运算符?这主要与范围有关。再次与Python和大多数行业保持一致,我们希望我们的范围在开始时就包含所有内容,而在结尾处包含所有内容。您传递的要说范围应该一直到终点的索引是什么?在C#中,答案很简单:x..^0从头到尾 x 。在Python中,没有可以提供的显式索引:-0不起作用,因为它等于0第一个元素!因此,在Python中,您必须完全不使用end索引来表示到达末尾的范围:x..。如果计算了范围的末尾,那么您需要记住要有特殊的逻辑,以防万一0。正如x..-y,在那里y被计算出来了0。这是常见的麻烦和错误源。 最后,请注意,索引和范围是.NET / C#中的第一类类型。它们的行为不依赖于它们的应用,甚至不用于索引器。您可以完全定义自己的使用index的索引器,以及定义使用索引的另一个索引器Range–我们将在eg中添加此类索引器 Span。但是,例如,您也可以使用采用范围的方法 问题来源于stack overflow

保持可爱mmm 2020-02-06 23:27:37 0 浏览量 回答数 0

问题

如何在Python中使用列名检索SQL结果列值??mysql

保持可爱mmm 2020-05-17 21:18:41 1 浏览量 回答数 1

问题

【精品问答】Python字符串面试知识点50问

珍宝珠 2019-12-01 22:06:38 25 浏览量 回答数 0

回答

sphinx不能直接支持mongodb的。用python来建立sphinx和mongodb之间的数据接口。sphinx索引完成之后,搜索动作时在sphinx自身的索引文件上完成的,不涉及的对数据库的搜索了。然后php再根据sphinx给出的id去读mongodb就可以了。不过python去读mongodb的速度肯定要比sphinx自己直接读mysql要慢,有实力的话可以自己用c写个接口。

落地花开啦 2019-12-02 01:51:38 0 浏览量 回答数 0

回答

Python index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。语法index()方法语法:str.index(str, beg=0, end=len(string))参数str -- 指定检索的字符串beg -- 开始索引,默认为0。end -- 结束索引,默认为字符串的长度。返回值如果包含子字符串返回开始的索引值,否则抛出异常。实例以下实例展示了index()方法的实例:实例(Python 2.0+)!/usr/bin/pythonstr1 = "this is string example....wow!!!";str2 = "exam";print str1.index(str2);print str1.index(str2, 10);print str1.index(str2, 40);以上实例输出结果如下:1515Traceback (most recent call last): File "test.py", line 8, in print str1.index(str2, 40);ValueError: substring not foundshell returned 1

世事皆空 2019-12-02 01:06:54 0 浏览量 回答数 0

回答

Python语言的各种应用程序是一种功能组合,可以提供这种语言的优势。 支持库 - Python提供了一个大型标准库,其中包括Internet协议,字符串操作,Web服务工具和操作系统接口等领域。 第三方模块的存在 - Python包索引(PyPI)包含许多第三方模块,使Python能够与大多数其他语言和平台进行交互。 生产力和速度 - Python具有干净的面向对象设计,提供增强的过程控制功能,并具有强大的集成和文本处理功能。 开源和社区开发 - Python语言是在OSI批准的开源许可下开发的,可以免费使用和分发,包括用于商业目的。 学习轻松和支持可用 - Python提供了出色的可读性和简洁易学的语法,有助于初学者使用这种编程语言。代码风格指南PEP 8提供了一组有助于格式化代码的规则。 用户友好的数据结构 - Python具有内置的列表和字典数据结构,可用于创建快速运行时数据结构。其次,它还提供了高级数据类型选项,可以减少所需支持代码的长度。

问问小秘 2019-12-02 02:11:42 0 浏览量 回答数 0

问题

带字符串索引的Python数组

保持可爱mmm 2020-02-09 12:05:43 0 浏览量 回答数 1

问题

我收到语法错误但代码看起来没问题

一码平川MACHEL 2019-12-01 19:32:08 434 浏览量 回答数 1

回答

pip是用来方便地管理Python的第三方包的,由于此前玩Python仅仅是浅尝辄止,用的是python(x,y),但是这里并不代表你想用什么包都能从里面找到的,所以我把python(x,y)卸了,然后重新装了个Python2.7.5,准备尝试一下用pip来下载想要的包。 不过pip也有一个麻烦之处,如果电脑不能联网怎么办? 之后再考虑这个问题,先在此记录一下我是如何安装pip的。本文参考百度经验《如何在win7下安装python包工具pip》,网上有很多pip安装教程,但感觉这个写的是最简明易懂的,只需要三步走就ok了。下面我会把我的安装步骤记录下来,也是按照“三步走”来的,不过我要对这个百度经验做些补充和完善,把我中途遇到问题的解决方法也一并发上来。 step1: (1)安装python2.7.5,这里我选择安装在C盘根目录下。 (2)安装完毕后C盘会生成一个叫“python27”的文件夹。 (3)打开python27,会发现该目录下存在一个叫Scripts的文件夹,点开Scripts,会发现里面有一系列和easy_install有关的文件。 (4)打开python27,会发现该文件下有一个叫python.exe的文件,将该文件的路径添加至环境变量PATH(在系统变量一栏下添加)。如果不做这一步,则cmd命令是无法识别“python”指令的。能不能成功识别该指令分别会出现如下状况: a.给cmd输入“python”,不能成功识别: b.给cmd输入“python”,能成功识别: step2: (1)现在cmd下就可以使用“python”指令了,一路cd到easy_install.exe的根目录下。 这里需要强调一点,cmd默认路径是从“C:UsersASUS>”开始的,如果想转到D盘E盘F盘方便,以E盘为例,直接输入“E:”就可以了,但如何转到C盘呢? 这里用的一个指令是“cd”,如下: (2)一路cd索引到easy_install.exe所在的地方,执行指令“easy_install.exe pip”: 则Scripts文件夹下会出现一系列和pip有关的文件,其中有pip.exe。 step3: (1)和之前处理python.exe的方法一样,将pip.exe的路径也添加到环境变量PATH中。 (2)在cmd下输入“pip”,如果能识别"pip"指令,则说明pip安装成功了。

xuning715 2019-12-02 01:10:29 0 浏览量 回答数 0

回答

python数据源方法可以实现.你的python可以按照你的规则读取本地文件,要有唯一标识,且时一个整数,指向某个文件,然后把数据交给sphinx作索引.

落地花开啦 2019-12-02 01:45:47 0 浏览量 回答数 0

问题

下标索引

哦哦喔 2019-12-01 22:04:32 23 浏览量 回答数 1

回答

在python中应该使用in操作符。 https://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange 你和in的情况会变成- if some_var not in test_values: # Do something 如果您想在某个范围内测试test_values,您可以在Python中使用列表切片。 例如,测试值到5(但不包括索引5) if some_var not in test_values[:5]: # Do something 或3至8(不包括8) if some_var not in test_values[3:8]: # Do something 更多关于在python中切片的信息,请点击这里

kun坤 2019-12-26 14:34:11 0 浏览量 回答数 0

问题

控制台索引管理里面没有我创建的索引,请问是怎么回事?

初商 2019-12-01 19:53:41 29 浏览量 回答数 0

回答

很大可能还是因为Mongo索引没加,加上对应的索引,千万级的数据都在毫秒级的相应时间我用的pymongo驱动,python环境

落地花开啦 2019-12-02 01:42:29 0 浏览量 回答数 0

回答

Python 变量类型变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。 变量赋值Python 中的变量赋值不需要类型声明。每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- counter = 100 # 赋值整型变量miles = 1000.0 # 浮点型name = "John" # 字符串 print counterprint milesprint name 运行实例 »以上实例中,100,1000.0和"John"分别赋值给counter,miles,name变量。执行以上程序会输出如下结果:1001000.0John多个变量赋值Python允许你同时为多个变量赋值。例如:a = b = c = 1以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。您也可以为多个对象指定多个变量。例如:a, b, c = 1, 2, "john"以上实例,两个整型对象1和2的分配给变量 a 和 b,字符串对象 "john" 分配给变量 c。 标准数据类型在内存中存储的数据可以有多种类型。例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。Python 定义了一些标准类型,用于存储各种类型的数据。Python有五个标准的数据类型:Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionary(字典) Python数字数字数据类型用于存储数值。他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。当你指定一个值时,Number对象就会被创建:var1 = 1var2 = 10您也可以使用del语句删除一些对象的引用。del语句的语法是:del var1[,var2[,var3[....,varN]]]]您可以通过使用del语句删除单个或多个对象的引用。例如:del vardel var_a, var_bPython支持四种不同的数字类型:int(有符号整型)long(长整型[也可以代表八进制和十六进制])float(浮点型)complex(复数)实例一些数值类型的实例:int long float complex10 51924361L 0.0 3.14j100 -0x19323L 15.20 45.j-786 0122L -21.9 9.322e-36j080 0xDEFABCECBDAECBFBAEl 32.3e+18 .876j-0490 535633629843L -90. -.6545+0J-0x260 -052318172735L -32.54e100 3e+26J0x69 -4721885298529L 70.2E-12 4.53e-7j长整型也可以使用小写 l,但是还是建议您使用大写 L,避免与数字 1 混淆。Python使用 L 来显示长整型。Python 还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。 Python字符串字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 :s="a1a2···an"(n>=0)它是编程语言中表示文本的数据类型。python的字串列表有2种取值顺序:从左到右索引默认0开始的,最大范围是字符串长度少1从右到左索引默认-1开始的,最大范围是字符串开头如果你要实现从字符串中获取一段子字符串的话,可以使用变量 [头下标:尾下标],就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。比如:s = 'ilovepython's[1:5]的结果是love。当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界。上面的结果包含了s[1]的值l,而取到的最大范围不包括上边界,就是s[5]的值p。加号(+)是字符串连接运算符,星号(*)是重复操作。如下实例:实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- str = 'Hello World!' print str # 输出完整字符串print str[0] # 输出字符串中的第一个字符print str[2:5] # 输出字符串中第三个至第五个之间的字符串print str[2:] # 输出从第三个字符开始的字符串print str * 2 # 输出字符串两次print str + "TEST" # 输出连接的字符串以上实例输出结果:Hello World!Hllollo World!Hello World!Hello World!Hello World!TESTPython列表List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。列表用 [ ] 标识,是 python 最通用的复合数据类型。列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]tinylist = [123, 'john'] print list # 输出完整列表print list[0] # 输出列表的第一个元素print list[1:3] # 输出第二个至第三个元素 print list[2:] # 输出从第三个开始至列表末尾的所有元素print tinylist * 2 # 输出列表两次print list + tinylist # 打印组合的列表以上实例输出结果:['runoob', 786, 2.23, 'john', 70.2]runoob[786, 2.23][2.23, 'john', 70.2][123, 'john', 123, 'john']['runoob', 786, 2.23, 'john', 70.2, 123, 'john']Python元组元组是另一个数据类型,类似于List(列表)。元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )tinytuple = (123, 'john') print tuple # 输出完整元组print tuple[0] # 输出元组的第一个元素print tuple[1:3] # 输出第二个至第三个的元素 print tuple[2:] # 输出从第三个开始至列表末尾的所有元素print tinytuple * 2 # 输出元组两次print tuple + tinytuple # 打印组合的元组以上实例输出结果:('runoob', 786, 2.23, 'john', 70.2)runoob(786, 2.23)(2.23, 'john', 70.2)(123, 'john', 123, 'john')('runoob', 786, 2.23, 'john', 70.2, 123, 'john')以下是元组无效的,因为元组是不允许更新的。而列表是允许更新的:实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]tuple[2] = 1000 # 元组中是非法应用list[2] = 1000 # 列表中是合法应用 Python 字典字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。字典用"{ }"标识。字典由索引(key)和它对应的值value组成。实例(Python 2.0+) !/usr/bin/python -- coding: UTF-8 -- dict = {}dict['one'] = "This is one"dict[2] = "This is two" tinydict = {'name': 'john','code':6734, 'dept': 'sales'} print dict['one'] # 输出键为'one' 的值print dict[2] # 输出键为 2 的值print tinydict # 输出完整的字典print tinydict.keys() # 输出所有键print tinydict.values() # 输出所有值输出结果为:This is oneThis is two{'dept': 'sales', 'code': 6734, 'name': 'john'}['dept', 'code', 'name']['sales', 6734, 'john']Python数据类型转换有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。函数 描述int(x [,base])将x转换为一个整数long(x [,base] )将x转换为一个长整数float(x)将x转换到一个浮点数complex(real [,imag])创建一个复数str(x)将对象 x 转换为字符串repr(x)将对象 x 转换为表达式字符串eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象tuple(s)将序列 s 转换为一个元组list(s)将序列 s 转换为一个列表set(s)转换为可变集合dict(d)创建一个字典。d 必须是一个序列 (key,value)元组。frozenset(s)转换为不可变集合chr(x)将一个整数转换为一个字符unichr(x)将一个整数转换为Unicode字符ord(x)将一个字符转换为它的整数值hex(x)将一个整数转换为一个十六进制字符串oct(x)将一个整数转换为一个八进制字符串

xuning715 2019-12-02 01:10:21 0 浏览量 回答数 0

问题

如何在没有Python的情况下使用generic.ListView将“.L”解释为单独的语法?

一码平川MACHEL 2019-12-01 19:31:21 567 浏览量 回答数 2

回答

不能完全确定,但是如果我没有在install_requires中输入错误,那么您可能会遇到以下类似情况: MyProject @ git://git.example.com/MyProject.git@v1.0 当必须从git仓库(或其他代码版本控制系统)中安装项目时,您无法真正指向版本号,就像将项目托管在索引(例如PyPI)上时那样,但是其次是最好的选择是您可以指向特定的git标签(或branch或任何其他种类的相似引用,但是tag可能是此用例的最佳选择)。 另外,我可能是错的,但是纯setuptools可能不支持此表示法 。这意味着您很可能将无法使用python setup.pydevelop或python setup.py install,而应使用python -m pip install -e。或python -m pip install。代替。 参考文献: https://pip.pypa.io/en/stable/reference/pip_install/#exampleshttps://www.python.org/dev/peps/pep-0508/https://www.python.org/dev/peps/pep-0440/#direct-referenceshttps://github.com/pypa/setuptools/issues/1983#issuecomment-584130062https://stackoverflow.com/a/60372954/11138259 回答来源:stackoverflow

is大龙 2020-03-24 08:56:49 0 浏览量 回答数 0

回答

for 循环 本系列前面 “探索 Python,第 5 部分:用 Python 编程” 一文讨论了 if 语句和 while 循环,讨论了复合语句以及适当缩进 Python 语句来指示相关 Python 代码块。该文的结尾介绍了 Python for 循环。但就其使用和功能来说,for 循环更值得关注,所以本文单独讲述该循环。 for 循环有一个简单的语法,使您可以从容器对象中提取单个项目并对其进行某些操作。简单地说,使用 for 循环,可以迭代中对象集合的项目。对象集合可以是任何 Python 容器类型,包括前面文章中讨论的 tuple、string 和 list 类型。但是容器 metaphor 的功能比这三种类型更强大。metaphor 包括其他序列类型,如 dictionary 和 set,将来的文章中将对它们进行讨论。 但是请稍等!还有更多信息:for 循环可以用于迭代支持迭代 metaphor 的任何对象,这使 for 循环非常有用。 清单 1 中显示了 for 循环的基本语法,还演示了如何在 for 循环中使用 continue 和 break 语句。 清单 1. for 循环的伪代码 ? 12345678910111213 for item in container: if conditionA: # Skip this item continue elif conditionB: # Done with loop break # action to repeat for each item in the container else: # action to take once we have finished the loop. 本系列中的第二篇文章 “探索 Python,第 2 部分:探索 Python 类型的层次结构” 介绍了 Python tuple。如文中所述,tuple 类型是不可变的异构容器。这主要是说 tuple 可以存放不同类型的对象,但是它一旦创建,就无法更改。清单 2 演示了如何使用 for 循环迭代 tuple 的元素。 清单 2. for 循环和 tuple ? 1234567891011121314151617 t = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) count = 0for num in t: ... count += num... else:... print count... 45 count = 0for num in t: ... if num % 2:... continue... count += num... else:... print count... 20 本例首先创建了名为 t 的 tuple,存放整数 0 至 9(包含 9)。第一个 for 循环迭代此 tuple,在 count 变量中累计 tuple 中数值的和。一旦代码已经迭代了 tuple 中的所有元素,它将进入 for 循环的 else 子句,打印 count 变量的值。 清单 2 中显示的第二个 for 循环也迭代 tuple 中的所有元素。但是,它仅累计容器中能够被 2 整除的那些项的值(请记住如果表达式为非零,if 语句将确定为真,num 不能被 2 整除时使用 % 运算符会返回非零值)。此限制通过使用适当的 if 语句和 continue 语句来完成。如前面的文章中所述,continue 语句使包含它的循环开始下一次迭代。实现相同结果的另一种方法是测试 tuple 中的当前项是否是偶数(使用 if not num % 2:),如果为真,那么将当前项添加到运行总和中。一旦代码完成 tuple 中的迭代,将调用 else 子句,打印总和。 本系列中的第三篇文章 “探索 Python:第 3 部分:探索 Python 类型的层次结构” 讨论了 Python string。string 是不可变的同构容器,这意味着它仅能存放字符且一旦建立将无法修改。清单 3 演示了如何使用 Python string 作为 for 循环的容器。 清单 3. for 循环和 string ? 123456789101112131415161718192021 st = "Python Is A Great Programming Language!"for c in st: ... print c,... P y t h o n I s A G r e a t P r o g r a m m i n g L a n g u a g e ! count = 0for c in st: ... if c in "aeiou":... count += 1... else:... print count...10 count = 0for c in st.lower(): ... if c in "aeiou":... count += 1... else:... print count... 12 本例提供了三个不同的 for 循环,它们都迭代同一 string。第一个 for 循环迭代 string “Python Is A Great Programming Language!” 并一次打印 string 中的一个字符。在此例中,print 语句变量 c 后加了一个逗号。这使 print 语句打印字符值时后面跟着空格字符,而不是换行字符。如果没有后面的逗号,字符将全部打印在单独的行中,会很难读。 下两个 for 循环迭代该字符串并计算其包含多少个元音字母(“a”、“e”、“i”、“o” 或 “u”)。第二个 for 循环在迭代原始 string 时仅查找小写元音字母。第三个 for 循环迭代通过调用 string 对象的 lower 方法返回的临时 string。lower 方法将 string 中的所有字符转换为小写。因此,第三个 for 循环可找到另外两个元音字母。 本系列中的第四篇文章 “探索 Python,第 4 部分:探索 Python 类型的层次结构” 介绍了 Python list。list 是异构可变容器,这意味着它可以存放不同类型的对象且创建后可以修改。清单 4 演示了如何使用 list 和 for 循环。 清单 4. for 循环和 list ? 12345678910 mylist = [1, 1.0, 1.0j, '1', (1,), [1]]for item in mylist: ... print item, "t", type(item))... 1 1.0 1j 1 (1,) [1] 既然 list 是很灵活的 Python 容器类型(您将在本系列其余的文章中多次看到它),本例看起来可能过于简单了。但是,这是一部分要点:使用 for 循环使处理容器中的每个项目非常简单,甚至处理包含各种不同对象的 list 也是如此。本例迭代 Python list 中的所有项目,并在单独的行中打印每一项及其相对应的 Python 类型。 迭代和可变容器 Python list 是一个可变序列,提供了一种令人好奇的可能性:for 循环主体可以修改其正在迭代的 list。正如您可能认为的,这样并不好,如果进行此操作,Python 解释器将无法很好地工作,如清单 5 所示。 清单 5. 在 for 循环中修改容器 ? 1234567891011121314151617 mylist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]for item in mylist: ... if item % 2:... mylist.insert(0, 100)... ^CTraceback (most recent call last): File "", line 3, in ?KeyboardInterrupt print mylist [100, ...., 100, 100, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # Many lines deleted for clarity mylist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]for item in mylist[:]: ... if item % 2:... mylist.insert(0, 100)... print mylist [100, 100, 100, 100, 100, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 本例中的第一个 for 循环只要在原始 list 中发现奇数,它就在 list 的开始插入数值 100。当然,这是一种演示此问题的不同寻常的方式,但却非常好。一旦在三个点的 Python 提示后按 Enter 键,Python 解释器就处于无限循环的混乱中。要停止这种混乱,必须通过按 Ctrl-C(其在 Python 输出中显示为 ^C)来中断进程,然后会出现 KeyboardInterrupt 异常。如果打印出修改的 list,将看到 mylist 现在包含大量的值为 100 的元素(新元素的准确数量取决于您中断循环的速度)。 本例中的第二个 for 循环演示了如何避免此问题。使用切片运算符创建原始 list 的副本。现在 for 循环将迭代该副本,而对原始 list 进行修改。最终的结果是修改后的原始 list,它现在以五个值为 100 的新元素开始。 for 循环和序列索引 如果您用过其他编程语言,Python for 循环可能看起来有点儿古怪。您可能认为它更像 foreach 循环。基于 C 的编程语言具有 for 循环,但它的设计目的是对一系列操作执行特定次数。Python for 循环可以通过使用内置的 range 和 xrange 方法来模拟该行为。清单 6 中演示了这两种方法。 清单 6. range 和 xrange 方法 ? 12345678910 r = range(10)print r [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] type(r) xr = xrange(10)print xr xrange(10) type(xr) 本例首先演示了 range 方法,它创建一个包含一系列整数的新 list。调用 range 方法的一般形式是提供单个值,用作整数 list 的上限。零为起始值。因此,调用 range(10) 将创建包含整数 0 至 9(包含 9)的 list。range 方法接受起始索引以及步长。所以,调用 range(11,20) 将创建从 11 至 19(包含 19)的整数 list,而调用 range(12, 89, 2) 将创建从 12 至 88 的偶数 list。 由于 xrange 方法也创建整数 list(其使用相同参数),所以它与 range 方法非常相似。但是,xrange 方法仅在需要时才在 list 中创建整数。例如,在清单 6 中,尝试打印出新创建的 xrange 时除了 xrange 的名称,不会显示任何数据。当需要迭代大量整数时,xrange 方法更适用,因为它不会创建极大的 list,那样会消耗大量计算机内存。 清单 7 演示了如何在 for 循环内使用 range 方法来创建整数 1 至 10(包含 10)的乘法表。 清单 7. 创建乘法表 ? 123456789101112131415 for row in range(1, 11): ... for col in range(1, 11):... print "%3d " % (row * col),... print... 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 本例使用两个 for 循环,外面的 for 循环关注乘法表中的每一行,嵌套的 for 循环关注每行内的列。每个循环都迭代包含整数 1 至 10(包含 10)的 list。最里面的 print 语句使用了一个名为 字符串格式化 的新概念来创建格式设置精美的表。字符串格式化是一种非常有用的技术,用于以格式设置精美的布局创建由不同数据类型组成的 string。现在详细信息并不重要,将来的文章中将讲述这些内容(了解 C 编程语言的 printf 方法的任何人都会很熟悉这些内容)。在本例中,字符串格式化指定将从整数创建新 string 且需要保留三个字符来存放该整数(如果该整数小于三个字符,将在左边用空格填补,从而使数据排列整齐)。第二个 print 语句用于打印新行,从而使乘法表中的下一行被打印在新的行中。 range 方法还可用于迭代容器,通过使用适当的索引访问序列中的每一项。要进行此操作,需要包含容器的允许范围索引值的整数 list,这可以通过使用 range 方法和 len 方法来轻松实现,如清单 8 所示。 清单 8. 在 for 循环内索引容器 ? 1234567891011121314 st = "Python Is A Great Programming Language!"for index in range(len(st)): ... print st[index],... P y t h o n I s A G r e a t P r o g r a m m i n g L a n g u a g e ! for item in st.split(' '): ... print item, len(item)... Python 6Is 2A 1Great 5Programming 11Language! 9 这个最后的示例演示了如何使用 len 方法作为 range 方法的参数,创建可用于单独访问 string 中每个字符的整数 list。第二个 for 循环还显示了如何将 string 分割为子字符串的 list(使用空格字符来指示子字符串的边界)。for 循环迭代子字符串 list,打印每个子字符串及其长度。

xuning715 2019-12-02 01:10:25 0 浏览量 回答数 0

问题

python web framework大型项目

祖安文状元 2020-02-21 17:39:28 3 浏览量 回答数 1

问题

是否有NumPy函数返回数组中某物的第一个索引?

保持可爱mmm 2020-01-14 14:56:05 0 浏览量 回答数 1

回答

你这个问题太大了;用一种语言很难设计出优异的分布式爬虫。里面有爬去,筛选,去重,索引,存储,查询等一系列的模块服务。比如存储就不是Python擅长的,索引,查询等都需要其他语言搭配设计,比如java ,ES等进行整合。

ancin 2019-12-01 23:48:09 0 浏览量 回答数 0

回答

序列:在python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号——即元素的位置,也成为索引。序列分类:python包括6中内建的序列,最常用的的两种类型是:序列和元组。其他的序列有字符串、Unicode字符串、buffer对象和xrange对象。其中,列表和元组的主要区别在于:列表是可以被修改的,而元组则不可以。希望我的答案能够帮助到你,答案满意还请采纳,谢谢。

大财主 2019-12-02 01:05:56 0 浏览量 回答数 0

问题

Python中的索引和切片

kun坤 2019-12-26 10:46:11 0 浏览量 回答数 1

回答

Python中的range函数可以从指定的起始索引开始,比指定的终止索引小1。 例如,对于以下代码... for idx in range(0, 10): print(idx, sep=' ') ...的输出将是:0 1 2 3 4 5 6 7 8 9,即从起始索引(0)开始,直到比终止索引(10-1 = 9)小1。 当您在B节中调用prnObj(prnObj(listA,listB,index,index))时,您将发送index作为范围中函数的开始索引和结束索引。 prnObj`定义中的for循环,因此没有i可以取的值。 问题不在于发送整数变量。 回答来源:stackoverflow

is大龙 2020-03-23 21:13:29 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播