用户输入一个字符串,使用生成器函数进行统计,并将每一组统计结果输出在一行上?

个人公众号 yk 坤帝
后台回复 项目五 获取整理资源



86.生成器,迭代器的区别?

迭代器是遵循迭代协议的对象。用户可以使用 iter() 以从任何序列得到迭代器(如 list, tuple,dictionary, set 等)。另一个方法则是创建一个另一种形式的迭代器 —— generator 。要获取下一个元素,则使用成员函数 next()(Python 2)或函数 next() function (Python 3) 。当没有元素时,则引发

生成器(Generator),只是在需要返回数据的时候使用yield语句。每次next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)

区别: 生成器能做到迭代器能做的所有事,而且因为自动创建iter()和next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态的自动方法,当发生器终结时,还会自动抛出StopIteration异常。

88.请用一行代码 实现将1-N 的整数列表以3为单位分组

yield就是保存当前程序执行状态。你用for循环的时候,每次取一个元素的时候就会计算一次。用yield的函数叫generator,和iterator一样,它的好处是不用一次计算所有元素,而是用一次算一次,可以节省很多空间,generator每次计算需要上一次计算结果,所以用yield,否则一return,上次计算结果就没了

90.Python中的可变对象和不可变对象?

不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。

可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上其所指的值直接发生改变,并没有发生复制行为,也没有开辟出新的地址,通俗点说就是原地改变。

魔法方法就是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被Python所调用,你可以定义自己想要的行为,而这一切都是自动发生的,它们经常是两个下划线包围来命名的(比如 init_ , len ),Python的魔法方法是非常强大的所以了解其使用方法也变得尤为重要!

init 构造器,当一个实例被创建的时候初始化的方法,但是它并不是实例化调用的第一个方法。
new 才是实例化对象调用的第一个方法,它只取下cls参数,并把其他参数传给 init_ .
new 很少使用,但是也有它适合的场景,尤其是当类继承自一个像元祖或者字符串这样不经常改变的类型的时候。
call 让一个类的实例像函数一样被调用
getitem 定义获取容器中指定元素的行为,相当于self[key]
getattr 定义当用户试图访问一个不存在属性的时候的行为。
setattr 定义当一个属性被设置的时候的行为
getattribute
定义当一个属性被访问的时候的行为

92.面向对象中怎么实现只读属性?

将对象私有化,通过共有方法提供一个读取数据的接口


93.谈谈你对面向对象的理解?

面向对象是相当于面向过程而言的,面向过程语言是一种基于功能分析的,以算法为中心的程序设计方法,而面向对象是一种基于结构分析的,以数据为中心的程序设计思想。在面向对象语言中有一个很重要的东西,叫做类。面向对象有三大特性:封装、继承、多态。

94.请写出一段代码用正则匹配出ip?

思路:不管有多少个b替换成一个 

第一个代表贪心匹配,第二个代表非贪心;

?在一般正则表达式里的语法是指的"零次或一次匹配左边的字符或表达式"相当于{0,1} 而当?后缀于*,+,?,{n},{n,},{n,m}之后,则代表非贪心匹配模式,也就是说,尽可能少的匹配左边的字 符或表达式,这里是尽可能少的匹配.(任意字符)

所以:第一种写法是,尽可能多的匹配,就是匹配到的字符串尽量长,第二中写法是尽可能少的匹配,就是匹 配到的字符串尽量短。

98.正则表达式贪婪与非贪婪模式的区别?

定义:正则表达式去匹配时,会尽量多的匹配符合条件的内容 标识符:+,?,*,{n},{n,},{n,m} 匹配时,如果遇到上述标识符,代表是贪婪匹配,会尽可能多的去匹配内容

定义:正则表达式去匹配时,会尽量少的匹配符合条件的内容 也就是说,一旦发现匹配符合要求,立马就匹 配成功,而不会继续匹配下去(除非有g,开启下一组匹配) 标识符:+?,??,*?,{n}?,{n,}?,{n,m}? 可以看到,非贪婪模式的标识符很有规律,就是贪婪模式的标识符后面加上一个?

99.写出开头匹配字母和下划线,末尾是数字的正则表达式?

个人公众号 yk 坤帝
后台回复 项目五 获取整理资源

}

Python默认安装仅包含部分基本或核心模块,但用户可以安装大量的扩展模块,pip是管理模块的重要工具。 在Python启动时,仅加载了很少的一部分模块,在需要时由程序员显式地加载(可能需要先安装)其他模块。 减小运行的压力,仅加载真正需要的模块和功能,且具有很强的可扩展性。 可以使用sys.modules.items()显示所有预加载模块的相关信息。 * 1.4.9 模块导入与使用 n = random.randint(1,100) #获得[1,100]上的随机整数 可以使用dir()函数查看任意模块中所有的对象列表,如果调用不带参数的dir()函数,则返回当前作用域所有名字列表。 可以使用help()函数查看任意模块或函数的使用帮助。 * 1.4.9 模块导入与使用 from 模块名 import 对象名[ as 别名] #可以减少查询次数,提高执行速度 from 在2.x中可以使用reload函数重新导入一个模块,在3.x中,需要使用imp模块的reload函数。 Python首先在当前目录中查找需要导入的模块文件,如果没有找到则从sys模块的path变量所指定的目录中查找。可以使用sys模块的path变量查看python导入模块时搜索模块的路径,也可以向其中append自定义的目录以扩展搜索路径。 在导入模块时,会优先导入相应的pyc文件,如果相应的pyc文件与py文件时间不相符,则导入py文件并重新编译该模块。 * 1.4.9 模块导入与使用 导入模块时的文件搜索顺序 当前文件夹 sys.path变量指定的文件夹 优先导入pyc文件 * 1.4.9

}

我要回帖

更多关于 字符串连接函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信