1、Python列表和元组

接触python有一段时间了,在读书期间接触了好几门语言,但每门都感觉自己是个门外汉,都不精通,工作中总觉得自己的基础自己不牢靠。现在开始将自己学到的知识总结罗列出来,理一理自己的思路,也希望能够和学习python的同学相互交流,共同进步。

1、数据结构是将数据元素以某种方式组织在一起的数据集合,这些数据元素既可以是数字、字符,也可以是其他类型的数据结构。在python中最基本的数据结构是序列sequence,序列中的每个元素都有一个位置信息与其对应,称这个位置信息为索引。python中最常用的序列为列表和元组,其他的类型还有字符串、Unicode字符串、buffer对象和xrange对象。列表和元组的主要区别是,列表可以修改,元组不可以修改。

2、序列中的元素可以是任意类型,序列中可以包含其他序列。

1 >>> test = [23, 'apple', ['banana', 'hello world']]
2 >>> test
3 [23, 'apple', ['banana', 'hello world']]

3、通用序列操作:索引indexing、分片sliceing、加adding、乘multiplying等

3.1 索引

序列中的元素都是有编号的,从0开始递增。

字符串可以看做是字符组成的序列,注意:最后一个元素的编号是-1

可以直接对返回结果为序列的函数调用直接进行索引。

1   >>> test = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2   >>> test[3]
3  3

3.2 分片

分片操作来返回一定范围内的元素,他由两个索引来做为自己的边界,第1个元素是包含在片内的,第2个元素则不包含在分片内。

 1 >>> test = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 2 >>> test[3: 7]
 3 [3, 4, 5, 6]
 4 >>> test[0: -1]
 5 [0, 1, 2, 3, 4, 5, 6, 7, 8]
 6 >>> test[-3: 0]
 7 []
 8 >>> test[-3: 7]
 9 []
10 >>> test[-3: 9]
11 [7, 8]
12 >>> test[0: ]
13 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
14 >>> test[: 2]
15 [0, 1]
16 >>> test[:]
17 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

注意:只要分片中最左边的索引比最右边的索引晚出现在序列中,输出结果就是一个空序列。

分片操作在默认情况下的步长为1,成为隐身设置。我们可以显示第设置分片的步长,当步长为负数时,序列从右向左提取数据。

>>> test[: : 2]
[0, 2, 4, 6, 8]
>>> test[0: 10: 2]
[0, 2, 4, 6, 8]
>>> test[10: 0: -2]
[9, 7, 5, 3, 1]

注意:分片开始点的元素包括在序列当中,结束点的元素不包括在序列当中。

3.3 序列相加

注意:列表和字符串是不能够连接在一起的。

1 >>> [1, 2, 3] + [3, 4, 5]
2 [1, 2, 3, 3, 4, 5]
3 >>> 'Hello' + 'World!'
4 'HelloWorld!'

3.4 乘法

1 >>> 'Hello World!' * 5
2 'Hello World!Hello World!Hello World!Hello World!Hello World!'
3 >>> [1, 2] * 5
4 [1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

3.5 成员资格

使用in运算符检查一个值是否在序列中。

1 >>> test = 'hello'
2 >>> 'h' in test
3 True
4 >>> 'llo' in test
5 True
6 >>> number = ['one', 'two', 'three']
7 >>> 'one' in number
8 True

3.6 长度,最大值,最小值

1 >>> number = ['one', 'two', 'three', 'four']
2 >>> min(number)
3 'four'
4 >>> max(number)
5 'two'
6 >>> len(number)
7 4

4 列表的操作和方法

4.1 list函数

可以将任何的序列转化成列表,使用jion()函数能够让其转换回来。

1 >>> list('Hello')
2 ['H', 'e', 'l', 'l', 'o']
3 >>> ''.join(['H', 'e', 'l', 'l', 'o'])
4 'Hello'

4.2 基本列表操作

元素赋值、删除元素、分片赋值

 1 >>> x = [1, 1, 1]
 2 >>> x[1] = 2
 3 >>> x
 4 [1, 2, 1]
 5 >>> del x[1]
 6 >>> x
 7 [1, 1]
 8 >>> x[1:1] = [2, 3, 4]
 9 >>> x
10 [1, 2, 3, 4, 1]
11 >>> x[1: ] = [5, 6]
12 >>> x
13 [1, 5, 6]
14 >>> x[:] = []
15 >>> x
16 []

注意:在分片赋值时可以使用与原序列不等长序列将分片替换。

4.3 列表方法

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

4.3.1 append方法:在列表末尾追加新对象。

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

4.3.3 extend方法:在列表的末尾一次性追加另一个序列中的多个值。

4.3.4 index方法:从列表中获取某个对象第一个匹配项的索引位置。

4.3.5 insert方法:将对象插入到列表中。

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

数据结构栈中的入栈和出栈操作可以有pop和append方法来代替,从而实现python对栈的支持。

4.3.7 remove方法:移除列表中某个值的第一次匹配。

4.3.8 reverse方法:将列表中的元素反向存储。

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

4.4 元组:不可变序列

创建元组

1 >>> 1,2,3
2 (1, 2, 3)

空元组

1 >>> ()
2 ()

一个值的元组

1 >>> 2,
2 (2,)
3 >>> (2,)
4 (2,)
5 >>> (2)
6 2

tuple函数:以一个序列做为参数,并将其转化为元组。

1 >>> tuple([1,2,3])
2 (1, 2, 3)
3 >>> tuple('abc')
4 ('a', 'b', 'c')
5 >>> tuple((1,2,3))
6 (1, 2, 3)

注意:元组只支持创建和访问。

元组存在的意义:1,元组可以在映射中当做键使用,而列表不可以;2,元组作为很多内建函数和方法的返回值存在,此时必须对元组进行处理。

原文地址:https://www.cnblogs.com/wanghaoran/p/2877427.html