Python基本数据结构:列表

列表的特点:

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

切片操作符[ ]:

举例说明:
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 [ : ]

列表的添加操作:

  1. + 生成一个新的列表 。c = a+b
  2. Extend: 接受参数并将该参数的每个元素都添加到原有的列表中,原地修改列表而不是新建列表
  3. Append: 添加任意对象到列表的末端。
  4. Insert: 插入任意对象到列表中,可以控制插入位置。

列表的修改操作:

修改列表本身只需要直接赋值操作就行。

A = [1,2,3]
A[0] = ‘haha’
A == [‘haha’,2,3]

列表的删除操作:

  1. del :我们通过索引删除指定位置的元素。

    del a[0]
    a = [1,2,3]
    b = a
    del a #删除列表对象的引用, print b 仍为[1,2,3]
    del a[:] #清空列表对象的元素,此时再print b为空列表[]

  2. remove:移除列表中指定值的第一个匹配值。如果没找到的话,会抛异常。

    a = [1,2,3]
    a.remove(‘2’)

  3. pop:返回最后一个元素,并从list中删除它。

    a = [1,2,3]
    a.pop()

成员关系:

In/not in我们可以判断一个元素是否在列表里。 返回一个bool类型,元素在列表里返回true,否则返回fasle.

列表推导式:(列表解析List comprehensions)

  1. [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的区别

  2. [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]

  3. 列表推导式的一个不足是不要生成所有的数据用以创建列表。

  4. 生成器表达式(列表推导式的扩展):不真正创建数字列表,而是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目产生出来。使用了“延时计算”,使用内存上更有效。
    (expr for iter_var in iterable if cond_expr)

排序翻转:sort,reverse

  1. sort()函数:从小到大排序列表,这个方式直接修改原列表。返回值为None。

    a = [33,11,22,44]
    b = a.sort()
    print b #输出的内容是None
    print a #输出:[11,22,33,44]

  2. reverse()函数:反转一个list, 返回值为None,其余同上。

list方法:将部分数据结构转化成列表

a =’asf’
list(a) == [‘a’,’s’,’f’]
a = (1,2)
list(a) == [1,2]

xrange和range的区别

  1. xrange(开始,结束,步长 )生成一个xrange对象 a = xrange(1,10)
  2. 比较:range直接生成一个列表,xrange生成一个Xrange对象。
  3. 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值