列表的特点:
- 有序的集合
- 通过偏移来索引,从而读取数据
- 支持嵌套
- 可变的类型
切片操作符[ ]:
举例说明:
a = [1,2,3,4,5,6,7]
正向索引: a[0:4:1] == [1,2,3,4]
反向索引: a[-1:-4:-1] == [7,6,5]
默认索引: a[1:] == [2,3,4,5,6,7]
列表的拷贝(传值) b = a [ : ]
列表的添加操作:
+
生成一个新的列表 。c = a+b- Extend: 接受参数并将该参数的每个元素都添加到原有的列表中,原地修改列表而不是新建列表。
- Append: 添加任意对象到列表的末端。
- Insert: 插入任意对象到列表中,可以控制插入位置。
列表的修改操作:
修改列表本身只需要直接赋值操作就行。
A = [1,2,3]
A[0] = ‘haha’
A == [‘haha’,2,3]
列表的删除操作:
del :我们通过索引删除指定位置的元素。
del a[0]
a = [1,2,3]
b = a
del a #删除列表对象的引用, print b 仍为[1,2,3]
del a[:] #清空列表对象的元素,此时再print b为空列表[]remove:移除列表中指定值的第一个匹配值。如果没找到的话,会抛异常。
a = [1,2,3]
a.remove(‘2’)pop:返回最后一个元素,并从list中删除它。
a = [1,2,3]
a.pop()
成员关系:
In/not in我们可以判断一个元素是否在列表里。 返回一个bool类型,元素在列表里返回true,否则返回fasle.
列表推导式:(列表解析List comprehensions)
[expr for iter_var in iterable]
首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。比如我们要生成一个包含1到10的列表:
方法一:[x for x in range(1,11)]方法二:Range(1,11) #注意Range() 函数与range的区别
[expr for iter_var in iterable if cond_expr]
加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。比如要生成包含1到10的所有奇数列表:
方法一:range(1,11,2)
注:关于range函数:range( start, end ,step = 1) range(end)方法二:[x for x in range(1,11) if x % 2 == 1]
列表推导式的一个不足是不要生成所有的数据用以创建列表。
生成器表达式(列表推导式的扩展):不真正创建数字列表,而是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目产生出来。使用了“延时计算”,使用内存上更有效。
(expr for iter_var in iterable if cond_expr)
排序翻转:sort,reverse
sort()函数:从小到大排序列表,这个方式直接修改原列表。返回值为None。
a = [33,11,22,44]
b = a.sort()
print b #输出的内容是None
print a #输出:[11,22,33,44]reverse()函数:反转一个list, 返回值为None,其余同上。
list方法:将部分数据结构转化成列表
a =’asf’
list(a) == [‘a’,’s’,’f’]
a = (1,2)
list(a) == [1,2]
xrange和range的区别
- xrange(开始,结束,步长 )生成一个xrange对象 a = xrange(1,10)
- 比较:range直接生成一个列表,xrange生成一个Xrange对象。
- xrange用法:当我们需要操作一个非常大数据,而且内存比较吃紧的时候,可以用它来节省内存;一般用在循环里面,只需操作部分数据,推荐使用xrange。
for m in range(1000):
if m == 10:
print 'pass'
break
for m in xrange(1000): #这里只需生成[0-10]的列表,节省内存.
if m == 10:
print 'pass'
break