您的位置:首页 > 编程语言 > Python开发

学习python之路---python小算法总结(六)

2013-03-18 16:28 375 查看
题目26:python内存管理机制

Python中有两种垃圾回收方式:

1. 引用计数

2. 标记后清除,这种方式可以正确地清除循环引用

Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。

Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的
malloc。另外Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。

在Python中,许多时候申请的内存都是小块的内存,这些小块内存在申请后,很快又会被释放,由于这些内存的申请并不是为了创建对象,所以并没有对象一级的内存池机制。这就意味着Python在运行期间会大量地执行malloc和free的操作,频繁地在用户态和核心态之间进行切换,这将严重影响Python的执行效率。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。这也就是之前提到的Pymalloc机制。

题目27:循环计数器while和range

方法1:x='zhouyou'

for item in x:

print item

方法2:i=0

while i<len(x):

print x[i]

i+=1

方法3:

for i in range(len(x)):

print x[i]

题目28:嵌套for循环

>>>items=["aaa",111,(4,5),2.01]

>>> tests=[(4,5),3.14]

for key in tests:

ifkey in items:

printkey,"was found"

else:

printkey,"not found"

………………………………………………………………

方法二:

for key in tests:

foritem in items:

ifitem==key:

printkey,"was found"

break

else:

print key,"not found"

运行结果:(4, 5) was found

3.14 not found

题目29:python小技巧获取当前时间

import time

time.localtime(time.time()) #用time.localtime()方法,作用是格式化时间戳为本地时间

输出的结果是:time.struct_time(tm_year=2011, tm_mon=12, tm_mday=28, tm_hour=14,tm_min=52, tm_sec=14, tm_wday=2, tm_yday=362, tm_isdst=0)

time.strftime('%Y-%m-%d',time.localtime(time.time()))#格式成我们想要的时间表示形式

输出的结果:'2011-12-28'

知识扩展:

python中时间日期格式化符号:

%y 两位数的年份表示(00-99)

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)

%I 12小时制小时数(01-12)

%M 分钟数(00=59)

%S 秒(00-59)

题目30:寻找序列的交集

>>> s1="spam"

>>> s2="spcm"

>>> [x for x in s1 if x in s2]

['s', 'p', 'm']

方法2:

>>> def intersect(seq1,seq2):

res=[]

forx in seq1:

ifx in seq2:

res.append(x)

returnres

>>> intersect(s1,s2)

['s', 'p', 'm']
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: