第五节课:Python列表的应用

一、内置list方法
a = 'asdsf'
list(a)

返回一个列表, 参数是可选迭代对象。 里面输出的内容还是保持了传入可迭代对象的元素和顺序.
如果参数为空,则返回一个空的列表.

二、xrange和range的区别

2.1 迭代的意思:重复很多次做一些事情。 在Python中实现了__iter__方法的对象是可迭代的, 比如list,tuple,dict
2.2 xrange的用法
xrange(开始,结束,步长)
xrange生成一个xrange对象, 生成器的概念.

>>> a = xrange(1,10)
>>> a
xrange(1, 10)
>>> print type(a)
<type 'xrange'>
>>> print a[0]
1
>>> b = range(1,10)
>>> print type(b)
<type 'list'>
>>> b[0]
1

2.3 比较

range: 直接生成一个列表对象
xrange: 它是生成一个列表对象
xrange的用法:
1. 当我们需要操作一个非常大的数据,而且内存比较吃紧的时候,我们可以用xrange来节省内存.
2. xrange一般用在循环里面, 比如我们只需要操作部分数据的话, 而不是返回全部的数据来完成操作,推荐使用 xrange

for m in range(1000): [0-999]
if m == 10:
print 'sss'
break

for m in xrange(1000): [0-10] 11
for m == 10:
print 'sss'
break

三、列表推导式之再应用
3.1 取出1-100的所有直的平方
[x*x for x in range(101)]

3.2 里面生成的东西不只是数字
生成字符串 ['the %s' % x for x in range(10)]
生成元组 [(x,y) for x in range(2) for y in range(2)]
生成字典 dict([(x,y) for x in range(2) for y in range(2)])

四、翻来覆去之再谈引用 - 列表是可变对象


>>> a = ['i','am','lilei']
>>> b = a
>>> id(a)
38575480
>>> id(b)
38575480
>>> a[2]='xiaoming'
>>> print a
['i', 'am', 'xiaoming']
>>> print b
['i', 'am', 'xiaoming']
>>> del a
>>> b
['i', 'am', 'xiaoming']
>>>

>>> a = 'ABCDEFG'
>>> b = a
>>> id(a)
38588992
>>> id(b)
38588992
>>> a[2]
'C'
>>> a[2] = 'D'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

五、小技巧之再议删除

a = []
del a 基本删除

del a[:] 大量删除,适合a里数据太多的时候使用。性能上比上面好很多.

del c 和 del c[:] 还是有区别的.

>>> a = [1,2,3]
>>> b = a
>>> del a
>>> b
[1, 2, 3]
>>> c = b
>>> c
[1, 2, 3]
>>> del c[:]
>>> c
[]
>>> b
[]

修改、删除值,引用的内容会变化. 直接删除变量,原来引用的位置不会变化, 只是引用数量getrefcount减少. 这一点一定要注意.

原文地址:https://www.cnblogs.com/huiming/p/5522008.html