首页 > 编程 > Python > 正文

Python基本数据结构:列表

2019-11-08 01:53:08
字体:
来源:转载
供稿:网友

列表的特点:

有序的集合通过偏移来索引,从而读取数据支持嵌套可变的类型

切片操作符[ ]:

举例说明: 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+bExtend: 接受参数并将该参数的每个元素都添加到原有的列表中,原地修改列表而不是新建列表。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' breakfor m in xrange(1000): #这里只需生成[0-10]的列表,节省内存. if m == 10: print 'pass' break
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表