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

题目26python内存管理机制

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

1. 引用计数

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

Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。
Python
中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的 malloc。另外Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。
Python中,许多时候申请的内存都是小块的内存,这些小块内存在申请后,很快又会被释放,由于这些内存的申请并不是为了创建对象,所以并没有对象一级的内存池机制。这就意味着Python在运行期间会大量地执行mallocfree的操作,频繁地在用户态和核心态之间进行切换,这将严重影响Python的执行效率。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。这也就是之前提到的Pymalloc机制。

 

题目27:循环计数器whilerange

方法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


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

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']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值