Python遍历列表的方法enumerate,以及清空list方法

遍历list方法:


方法一:

tmplist = [1234, 5677, 8899]
for id in tmplist:
    print tmplist
输出: 
1234 
5677 
8899


方法二:用函数enumerate:

enumerate()是python的内置函数
enumerate在字典上是枚举、列举的意思
对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
enumerate多用于在for循环中得到计数


tmplist = [1234, 5677, 8899]
for index,app_id in enumerate(tmplist):
    print index, app_id
输出: 
0 1234 
1 5677 
2 8899

下标从1开始:

tmplist = [1234, 5677, 8899]
for index,app_id in enumerate(tmplist, 1):
    print index, app_id
输出: 
1 1234 
2 5677 
3 8899


方式三: 使用range()或xrange()
 tmplist = [1234, 5677, 8899]
    for i in range(len(tmplist)):
          print i,tmplist[i]
输出: 
0 1234 
1 5677 
2 8899

=========================

清空list的方法:

del list[:]

list=[]

list[:]=[]

[python]  view plain  copy
  1. def func(L):                                                                      
  2.     L.append(1)  
  3.     print L  
  4.     #L[:]=[]  
  5.     #del L[:]  
  6.     L = []  
  7.     print L  
  8.   
  9. L=[]  
  10. func(L)  
  11. print L  

输出结果:

[1]
[]
[1]

分析:L是可变数据类型,L作为参数,函数内对L的改变,是可以反映到函数外的L中的,执行L.append(1),是在操作,函数外L所占据的那块内存,然后执行L =[],(函数内的L),想当于L指向了另外一个空间。所以,func(L),print L,输出[1]。


其实函数的本意是将参数L指向的内存清空,用L=[],并不能清空L指向的内存

[python]  view plain  copy
  1. def func(L):  
  2.     L.append(1)                                                                   
  3.     print L  
  4.     L[:]=[]  
  5.     #del L[:]  
  6.     #L = []  
  7.     print L  
  8.   
  9. L=[]  
  10. func(L)  
  11. print L  

输出结果:

[1]
[]
[]

L[:]=[]:把L对应的内存清空


[python]  view plain  copy
  1. def func(L):                                                                      
  2.     L.append(1)  
  3.     print L  
  4.     #L[:]=[]  
  5.     del L[:]  
  6.     #L = []  
  7.     print L  
  8.   
  9. L=[]  
  10. func(L)  
  11. print L  

分析:

del L[:] 的效果跟L[:]=[]的效果是一样的。


Python 赋值,往往是通过指针完成的,a=b,只是让a指向了b,并未把b的内容拷贝到a

[python]  view plain  copy
  1. def func(L):                                                                      
  2.     L.append(1)  
  3.     print L  
  4.     print id(L)  
  5.     #L[:]=[]  
  6.     #del L[:]  
  7.     L = []  
  8.     print id(L)  
  9.     print L  
  10.   
  11. L=[]  
  12. func(L)  
  13. print L  
输出结果:

31460240
31460168

很明显:通过赋值L=[]后,L指向的内存完全不一致了。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值