在使用python的开发过程中,常常需要判断,字符串中是否存在子串的问题,
似乎就需要借助for做循环判断,那么这种情况有没有更pythonic的方法呢?
判断一个字符串中是否存在某一个子串
判断一个字符串中是否存在子串通常使用in关键词,如下:
in关键词可以用来判断一个字符串中是否含有一个子串
判断一个字符中是否含有多个子串中的一个
只要有其中的任意一个就输出True,应该怎么判断呢?
我们发现,代码结构看起来还是不够pythonic
有没有更加优雅的写法呢?
可以使用内置的any()函数。
描述 某次科研调查时得到了n个自然数,每个数均不超过(1.5*109).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结 ...
Redis主从同步命令和配置项 启动主从复制:master无需任何操作,slave中使用以下任意一种开启复制功能 (1).通过配置文件启动主从复制: 在redis.conf中加入"slave ...
内容来源于网络如有侵权请私信删除
input():接收命令行下输入
1)在py2下:如果你输的是一串文字,要用引号''或者""引起来,如果是数字则不用。
2)在py3下:相当于py2的raw_input(),得到的都是字符串,而非数值
特别说明:条件后面的冒号不能少,同样必须是英文字符。
特别特别说明:if内部的语句需要有一个统一的缩进,一般用4个空格。python用这种方法替代了其他很多编程语言中的{}。你也可以选择1/2/3...个空格或者按一下tab键,但必须整个文件中都统一起来。千万不可以tab和空格混用,不然就会出现各种莫名其妙的错误。所以建议都直接用4个空格。
以缩进代替{},第一个缩进 为{,第一个不缩进为}
注意:循环体内的语句,缩进相同。if也是如此。
range(1, 101)表示从1开始,到101为止(不包括101),取其中所有的整数
如果想让这5个*在同一行,python2的话就在print语句后面加上逗号
第二个print的缩进和内层的for是一样的,这表明它是外层for循环中的语句,每次i的循环中,它会执行一次。
print()没有写任何参数,是起到换行的作用
通过函数,可以在程序里重用代码;通过模块,则可以重用别的程序中的代码。
模块可以理解为是一个包含了函数和变量的py文件。在你的程序中引入了某个模块,就可以使用其中的函数和变量。
import random:import语句告诉python,我们要用random模块中的内容。然后便可以使用random中的方法(调用方式“模块名.方法名”),比如:
场景:如果只是用到模块中的一个函数或变量时
调用方式:方法名(或变量名),不需要加模块名。
randint(5, 10)将会产生一个5到10之间(包括5和10)的随机整数
1、必须以字母或下划线(_)开头,其余部分可以是字母、下划线(_)或数字(0-9)
2、大小写敏感
一、Python中的数据类型有数字、字符串,列表、元组、字典、集合等。有两种方法判断一个变量的数据类型
2、通过与其他已知类型的常量进行对比:type()
转义符\,三个引号(''')
\的用途:1)转义,2)在源码换行(在代码中换行,而不影响输出的结果)
这个字符串仍然只有一行,和"this is thesame line"是一样的,只是在代码中换了行。当你要写一行很长的代码时,这个会派上用场(只是在源码中换行,实际数据不换行)。
三个引号(''')或者("""):在三个引号中,可以方便地使用单引号和双引号(不需要转义符\),并且可以直接换行(实际数据中换行)
1、str():将数字转化为字符串
2、%:对字符串进行格式化
1)%d:替换整数,%dw会被%后面的整数替换
2)%f:替换小数,%.2f会保留2位小数
在python中,其他类型转成 bool 类型时,以下值会被认为是False:
其他的值都认为是True
None是python中的一个特殊值,表示什么都没有,它和0、空字符、False、空集合都不一样。
在if、while等条件判断语句里,判断条件会自动进行一次bool的转换。比如
这在编程中是很常见的一种写法。效果等同于
关键字def,格式如下:
return是函数的结束语句,return后面的值被作为这个函数的返回值。函数中任何地方的return被执行到的时候,这个函数就会结束。
以上函数,name 参数可忽略
3、如果参数有默认值,则可只传部分参数,按位置匹配(在前)和按参数名匹配可以结合使用。如:
在变量前加上星号前缀(*),调用时的参数会存储在一个 tuple(元组)对象中,赋值给形参。在函数内部,需要对参数进行处理时,只要对这个 tuple 类型的形参(这里是 args)进行操作就可以了。因此,函数在定义时并不需要指明参数个数,就可以处理任意参数个数的情况。需要注意,tuple 是有序的,所以 args 中元素的顺序受到赋值时的影响。
5、func(**kargs) 把参数以键值对字典的形式传入。如:
字典是无序的,所以在输出的时候,并不一定按照提供参数的顺序。同样在调用时,参数的顺序无所谓,只要对应合适的形参名就可以了。于是,采用这种参数传递的方法,可以不受参数数量、位置的限制。
6、参数调用方式混合使用。例:
在混合使用时,首先要注意函数的写法,必须遵守先后顺序:无默认值形参,默认值形参,元组形参,字典形参。
带有默认值的形参(arg=)须在无默认值的形参(arg)之后;元组参数(*args)须在带有默认值的形参(arg=)之后;字典参数(**kargs)须在元组参数(*args)之后。可以省略某种类型的参数,但仍需保证此顺序规则。
调用时也需要遵守先后顺序 :不指定参数名,指定参数名。
指定参数名称的参数要在无指定参数名称的参数之后;不可以重复传递,即按顺序提供某参数之后,又指定名称传递。
在函数被调用时,参数的传递过程为:不指定参数名匹配,指定参数名匹配,多余的不指定参数名为元组参数,多余的指定参数名为字典参数。
1.按顺序把无指定参数的实参赋值给形参;
2.把指定参数名称(arg=v)的实参赋值给对应的形参(非元组、非字典);
3.将多余的无指定参数的实参打包成一个 tuple 传递给元组参数(*args);
4.将多余的指定参数名的实参打包成一个 dict 传递给字典参数(**kargs)。
list是以[]包围、逗号分隔的一组数据,数据之间的类型可以不同。
range(1,10)在py2中产生一个list;在py3中返回一个可以循环遍历的range对象,可以通过list()函数转换成列表。
1、以索引访问,从0开始
1)如果索引为负数,则表示从后往前倒数:
l[-1]表示l中的最后一个元素。
l[-3]表示倒数第3个元素。
2)切片操作符,以:分隔的一对数字
冒号前的数字表示开始位置(从0开始),冒号后的数字表示 结束位置。[起始位置:结束位置),即包含起始位置,不包含结束位置
如果不指定第一个数,切片就从列表第一个元素开始。
如果不指定第二个数,就一直到最后一个元素结束。
都不指定,则返回整个列表的一个拷贝。
切片中的数字可以为负数。
3、删除list中的元素:del命令
split默认是按照空白字符(包括空格、换行符\n、制表符\t)进行分割,得到一个list。另外可以揎分割符。
join()是连接符的方法,参数是list
字符串的遍历与访问,与list类似
通过for...in可以遍历字符串中的每一个字符。
通过[]加索引的方式,访问字符串中的某个字符。
通过两个参数,截取一段子串,具体规则和list相同。
join方法也可以对字符串使用,作用就是用连接符把字符串中的每个字符重新连接成一个新字符串。
基本格式是(key是键,value是值):
2.键只能是简单对象,比如字符串、整数、浮点数、bool值。lis就不能作为键,但是可以作为值。
1、python字典中的键/值对没有顺序,无法用索引访问字典中的某一项,而是要用键来访问。
2、通过for...in遍历(遍历的变量中存储的是字典的键):
增加一项(给一个新键赋值):score['慕容复'] = 88
新建一个空的字典:d = {}
元组(tuple)也是一种序列,和list类似,只是元组中的元素在创建之后就不能被修改。
都是元组的实例。它有和list同样的索引、切片、遍历等操作
得到这个函数的返回值有两种形式,一种是根据返回值元组中元素的个数提供变量:
还有一种方法是用一个变量记录返回的元组:
文件名可以用文件的完整路径,也可以是相对(代码的)路径。
python默认是以只读模式打开文件。如果想要写入内容,在打开文件的时候需要指定打开模式为写入:f = open('output.txt', 'w')
read() #把文件内所有内容读进一个字符串中
必须以w或a模式打开文件,才能写入
pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。