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

python学习三--列表

2017-12-16 17:51 141 查看
列表

列表是可变的(mutable)----可以改变列表的内容,并且列表有很多有用的、专门的方法。

========================================

List函数

>>> list('wolf@laolang')

['w', 'o', 'l', 'f', '@', 'l', 'a', 'o', 'l', 'a', 'n', 'g']

list函数适用于所有类型的序列,而不只是字符串。

========================================

基本的表操作

列表可以使用所有适用于序列的标准操作,如索引、分片、连接、乘法等。

列表是可以被修改的。

1、改变列表:元素赋值

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

>>> x[2]=8           使用索引来标记一个特定的、位置明确的元素赋值。

>>> x

[1, 2, 8, 4]

>>> x[10]=8         不能为一个位置不存在的元素进行赋值。

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

IndexError: list assignment index out of range

2、删除元素

从列表中删除元素也很容易,使用del语句来实现。

>>> names = ['wolf','zhangs','yujing','laolang']

>>> del names[2] 

>>> names

['wolf', 'zhangs', 'laolang']

删除之后列表的长度也随之减少。

del除了能删除列表的元素,也能删除其他序列的元素,甚至是其他变量的删除操作。

3、分片赋值

>>> name = list('wolf')

>>> name

['w', 'o', 'l', 'f']

>>> name[2:]=list('laolang')       从第3个位置开始替换。

>>> name

['w', 'o', 'l', 'a', 'o', 'l', 'a', 'n', 'g']

>>> name = list('perl')

>>> name[1:] = list('ython') 

>>> name

['p', 'y', 't', 'h', 'o', 'n']

也可以在不替换任何原有元素的情况下插入新的元素

>>> name = list('wolf')

>>> name[4:1] =['@laolang'] 

>>> name

['w', 'o', 'l', 'f', '@laolang']

>>> name[1:4] = []       通过分片赋值也可以删除元素。

>>> name

['w', '@laolang']

=======================================

列表方法

方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者

其他类型的对象,一般来说,方法可以这样进行调用:

对象.方法(参数)

方法调用与函数调用很类似。

1、append

append方法用于在列表末尾追加新的对象

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

>>> abc.append(4)

>>> abc

[1, 2, 3, 4]

2、count

count方法统计某个元素在列表中出现的次数

>>> ['to','be','or','not','to','be',].count('to')

2

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

>>> x.count(1)

2

>>> x.count([1,2])

2

3、extend

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

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

>>> b = [4,5,6]

>>> a.extend(b)

>>> a

[1, 2, 3, 4, 5, 6]

这个操作看起来很像连接操作,主要区别是:extend方法修改了被扩展的序列。而原始的连

接操作会返回一个全新的表。

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

>>> b = [4,5,6]

>>> a+b

[1, 2, 3, 4, 5, 6]

>>> a

[1, 2, 3]

>>> a = a+b    这个不是原位置操作,他并不会修改原来的列表。

>>> a

[1, 2, 3, 4, 5, 6]

可以使用分片来实现

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

>>> b = [4,5,6]

>>> a[len(a):] = b

>>> a

[1, 2, 3, 4, 5, 6]

4、index

index 方法用于从列表中找出某个值第一个匹配项的

>>> knights = ['We','are','the','kninghts','who','say','ni']

>>> knights.index('who')

4

>>> knights[4]

'who'

5、insert

insert 方法用于将对象插入到列表中

>>> numbers = [1,2,3,5,6,7]

>>> numbers.insert(3,'four')

>>> numbers

[1, 2, 3, 'four', 5, 6, 7]

>>> numbers = [1,2,3,5,6,7]

>>> numbers[3:3] = ['four']    分片也可以实现,但是他的可读性不如insert

>>> numbers

[1, 2, 3, 'four', 5, 6, 7]

6、pop

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

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

>>> x.pop()

3

>>> x

[1, 2]

>>> x.pop(0)

1

>>> x

[2]

pop是唯一一个技能修改列表又能返回元素值(除了none)的列表方法。

使用pop方法可以实现一种常见的数据结构---栈,栈的原理就像堆盘子那样。只能

在顶部放一个盘子,同样,也只能从顶部拿走一个盘子,最后被放入堆栈的最先被

移除--这个原理称为LIFO,即后进先出。

放入和移出---入栈(push)和出栈(pop)。python入栈没有方法,但是可以用

append方法来代替。pop方法和append方法的操作结果是恰好相反的。

如果入栈刚刚出栈的值,最后得到的结果还是原来的栈。

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

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

>>> x

[1, 2, 3]

7、remove

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

>>> x = ['to','be','or','not','to','be']

>>> x.remove('be')

>>> x

['to', 'or', 'not', 'to', 'be']

>>> x.remove('bee')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: list.remove(x): x not in list

只有第一次出现的值被移除了,而不存在于列表中的值,是不会被移除的。

8、reverse

revers方法将列表中的元素反向存放

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

>>> x.reverse()

>>> x

[3, 2, 1]

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

>>> list(reversed(x))

[3, 2, 1]

9、sort

sort方法用于在原位置对列表进行排序。在“原位置排序”改变原来的列表,从

而让其中的元素能按一定的顺序排列。

>>> x = [4,6,2,1,7,9]

>>> x.sort()

>>> x

[1, 2, 4, 6, 7, 9]

有时候需要保留原列表

>>> x = [4,6,2,1,7,9] 

>>> y = x[:]  先赋值给y

>>> y

[4, 6, 2, 1, 7, 9]

>>> y.sort()

>>> y

[1, 2, 4, 6, 7, 9]

sorted函数

还有一个获取列表副本的方法,使用sorted函数。

>>> x = [4,6,2,1,7,9]

>>> y = sorted(x)

>>> x

[4, 6, 2, 1, 7, 9]

>>> y

[1, 2, 4, 6, 7, 9]

这个函数实际可以用于任何序列,缺总是返回一个列表。

>>> sorted('python')

['h', 'n', 'o', 'p', 't', 'y']

10、高级排序

compare函数

x<y 返回负值

x>y 返回正数

x=y  返回0

定义好函数之后,就可以提供给sort方法作为参数。内建函数cmp提供了比较函数。

>>> cmp(42,32)

1

>>> cmp(42,52)

-1

>>> cmp(42,42)

0

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

>>> numbers.sort(cmp)

>>> numbers

[2, 5, 7, 9]

sort方法有另外两个可选的参数--key和reverse。

>>> x = ['aardfsgdd','acccbbe','acmmmmm','addddd','aeeee','ddffdf']

>>> x.sort(key=len)

>>> x

['aeeee', 'addddd', 'ddffdf', 'acccbbe', 'acmmmmm', 'aardfsgdd']

另一个关键字参数reverse是简单的布尔值。

>>> x = [4,6,2,1,7,9]

>>> x.sort(reverse=True)

>>> x

[9, 7, 6, 4, 2, 1]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: