Python列表和鸭子类型

    列表可以说是python最重要的数据结构,因为python具有正交性,所以我们可以从list中的特性推测出其他数据结构的基本的特性。python具备了鸭子特性和,让其语言具有极强的表达性。

1   list()函数

list(obj)可以把一切序列转换为list。同时我们可以推测只要是序列,所以obj可以是字符串,元组和任何可以迭代的序列。同时我们可以推测具有tuple(),map()等类型函数。

2 基本的列表操作

2.1 赋值

x = [ 0,1,2]

x [1] = 2

2.2 删除元素

del x[0]

2.3 分片赋值

可以同时对多个元素赋值,也可以使用与原序列不等长的序列将分片替换。

更强大的是分片赋值可以在不需要替换任何原有元素的情况下插入新元素。

x [1:1] = [2,3,4]

2.4 列表方法

1 append

append 方法用于在列表末尾追加新的对象。append不是简单的返回一个修改过的新列表,而是直接修改原理的列表。

list = [1,2,3]

list.append(4)

2 count

count方法用于统计元素在列表中出现的次数。

list .count()

3 extend

extend 方法可以在列表的末尾追一次性追加另一个序列中的多个值。可以用一个列表扩展另一个列表。

a = [1,2,3]

b = [4,5,6]

a.extend(b)

这样的效率高于 a = a+ b

4 index

index 方法用于在列表中找出和参数匹配项的索引位置。

5 insert

将对象插入list中。也可以用分片赋值来实现。

6 pop

pop方法会移除列表中的一个元素,(默认是最后一个)并返回该元素的值。

>>>x = [1,2,3]

>>>x.pop()

3

>>>x

[1,2]

>>>x.pop[0]

1

>>>x

[2]

pop方法是唯一一个能修改列表又返回元素值的列表方法。

利用pop方法可以实现一种常见的数据结构——栈。(pop,append)

>>>x = [1,2,3]

>>>x.append(x.pop())

>>>x

[1,2,3]

7 remove()

remove方法用于移除列表中的第一个匹配项:

8 reverse()

将列表中的元素反向存放。

9 sort()

sort方法用于在原位置对列表进行排序。意味着改变原来的列表。所以有时想要得到一张已排序的列表,又不希望破坏本来的

列表,可以用sorted(obj).在python中既不是传值也不是传址,传的是对象的引用。这是很重要的性质。所以对于列表这样的可变对象来说

>>> list1 = [1,2,3]

>>>list2 = [

10 高级排序

    如果希望元素按照特定的方式进行排序(而不是sort函数默认的方式,即根据Python的默认排序规则按升序排列元素)那么可以通过compare(x,y)的形式自定义比较函数,compare(x,y)函数会在x < y 时返回负数,在 x > y时返回正数,则在 x = y 则返回0。定义好函数之后,就可以把函数提供给sort方法作为参数,内建函数的cmp就是按照这样实现的。

>>>cmp(42,32)

1

>>>cmp(99,100)

0

>>>cmp(10,10)

0

>>>numbers = [5,2,9,7]

>>>numbers.sort(cmp)

>>>numbers

[2,5,7,9]

sort方法有另外两个可选的参数———key和reverse,如果要使用它们,那么就需要通过名字来指定。(关键字参数)

key和cmp类似———必须提一个在排序过程中使用的函数。另一个关键字参数是简单的布尔值。(True和Flase)来指明列表是否要继续进行反向排序。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值