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

列表特点

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值