您的位置:首页 > 编程语言 > Python开发

[2016/11/24]python数据类型之列表

2016-11-25 10:54 316 查看

列表特点

1.有序的集合

2.通过偏移来索引,从而读取数据

3.支持嵌套

4.可变的类型

(联想c中的数组,可以理解为数组和vector的升级版)

列表切片

1.正向索引

2.反向索引

3.默认索引

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]
#默认索引
#[2,4,6]


添加操作

a = [1,2,3]
b = [4,5,6]
#方法一
#"+"可以生成一个新的列表对象。
>> a + b
>> [1,2,3,4,5,6]

#方法二
#extend方法,接受参数,将其中每个元素都添加在原有列表中.a的id值是不变的
>> a.extend(b)
>> [1,2,3,4,5,6]

#方法三
#append方法,添加任意对象到列表末端。
>> a.apend("applepen")

#方法四
#insert方法,插入任意对象到列表中的可控位置。


修改

直接赋值就行

删除操作

del : 通过索引删除指定元素。(del a[0]) 没有则抛出异常。

remove 方法,a.remove(要删除的元素),没有则抛出异常

pop方法:a.pop(),返回最后一个元素并删除它

成员关系

判断元素是不是在数组里

a = [1,4,6]
>> 4 in a
>> True


列表推导式

[expr for iter_var in iterable]

首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。

比如我们要生成一个包含1到10的列表

[x for x in range(1,11)]

Range的返回值是一个列表。

[expr for iter_var in iterable if cond_expr]

加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表

要生成包含1到10的所有奇数列表。

range(1,11,2)



[x for x in range(1,11) if x % 2 == 1]

(自己试一试就知道了,善用type函数)

还可以生成字符:

["the alpabate : %s" % x for x in range(1,2)]


还可以生成元组:

[(x,y) for x in range(2) for y in range(2)]
#[(0, 0), (0, 1), (1, 0), (1, 1)]


还可以生成字典:

dict([(x,y) for x in range(2) for y in range(2)])
#{0: 1, 1: 1}


排序翻转

排序:sort方法

翻转 :reverse方法

(二者都是直接在原列表上改变的,不是返回一个copy)

内置list方法

#把可迭代对象转化成一个list
a = "asd"
list(a)


xrange和range的具体区别

xrange的用法:

xrange(开始,结束,步长)

生成一个xrange对象。

#实验
a = xrange(1,10)
print type(a)
print a[0]


比较

range: 直接生成一个列表对象。

xrange: 生成一个xrange对象.

xrange的用法:

1.当我们需要操作一个非常大的数据,而且内存比较吃紧的时候,我们可以用xrange来操作省内存。

2xrange一般用在循环里面,比如我们只需要操作部分数据的话,而不是返回全部元素来完成操作,推荐用xrange,效率更高。

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

for m in xrange(1000):#0 - 10
if m == 10:
print 'sss'
break


练习:通过list改变tuple中的元素

a = (1,2,3)
>>> b = list(a)
>>> b
[1, 2, 3]
>>> b[2] = 4
>>> a = tuple(b)
>>> print a
(1, 2, 4)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python