python基础——列表和元组

python最基本的数据结构为序列(sequence)。python内置了多种序列,其中以 序列、元组、字符串最为常见

1、通用的序列操作

有几种操作适用于所有序列,包括索引、切片、相加、相乘成员资格检查

1.1 索引( indexing )

序列中的所有元素都有编号——从0开始递增

>>> a = 'hello'
>>> a[0]
'h'

>>> a[-1]
'o'

 0 指向第一个元素。当索引使用负数,表示从末尾往前数,[ -1 ]即表示最后一个元素。

1.2 切片(slicing) 

  1. 用来访问特定范围内的元素

   >>> b = 'hello python'
 >>> b[1:4]
'ell'

其中第一个索引指定的元素包含在内,第一个元素指定的索引不包含在内。

>>> number[-3:-1]
[8, 9]

要从列表末尾开始数,可使用负数索引。

如果要取从指定位置索引到末尾之间的元素。可使用以下方式:

>>> number[-3:]  (第二个索引可省略)
[8, 9, 10]

如要从头开始则可使用:

>>> number[:3]  (第一个索引可省略)
[1, 2, 3]

 要复制整个序列,可将两个索引都省略

>>> number[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> number[0:10:2]
[1, 3, 5, 7, 9] 

 第三个参数2表示步长,不填时默认为1。不能为0,但可以为负数,表示从右向左提取:

>>> number[8:3:-1]
[9, 8, 7, 6, 5]

 步长为负数时,第一个索引必须比第二个大

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

序列相加

>>> 'python'*5
'pythonpythonpythonpythonpython' 

 将序列与数x相乘时,将重复这个序列x次来创建一个新的序列

成员资格

要检查特定的指是否包含在序列中,可使用运算符in。条件满足时,返回True,否则为Flase

>>> p = 'python'
>>> 'pt' in p
False
>>> 'py' in p
True

 2 列表

list 函数

>>> list('hello')
['h', 'e', 'l', 'l', 'o']
>>>

使用list创建的字符串列表可以使字符串像列表一样操作。

可以将任何序列作为list的参数,不仅仅是字符串。

1、修改列表:给元素赋值

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

2、删除元素

>>> del a[2]
>>> a
[2, 1]

3、给切片赋值

>>> name = list('java')
>>> name
['j', 'a', 'v', 'a']
>>> name[2:] = list('python')
>>> name
['j', 'a', 'p', 'y', 't', 'h', 'o', 'n']

还可以插入新元素

>>> number = [1,5]
>>> number[1:1] = [2,3,4]
>>> number
[1, 2, 3, 4, 5]

同理可用于做删除

>>> number = [1,2,3,4,5]
>>> number[1:4] = []
>>> number
[1, 5]

列表方法

1、append

末尾添加

>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

2、clear

清空列表, 同切片赋值语句 lst[:] = [] 

>>> lst = [1, 2, 3]
>>> lst.clear()
>>> lst
[]

3、copy

复制列表

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

这种复制只是将a、b指向同一个列表,无论其中哪一个做出修改,另一个也随之改变。

>>> a = [1, 2, 3]
>>> b = a.copy()
>>> b[1] = 4
>>> a
[1, 2, 3]

这种操作同样是复制,不同的是,a、b指向两个列表。因此他们各自的操作互不影响。类似于 a[:] 和 list(a)

4、extend

扩展方法,能够同时将多个值附加到表的末尾。返回的是一个全新的序列

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a = a + b
>>> a
[1, 2, 3, 4, 5, 6]

这种效率比extend低

6、index

查找列表中指定值第一次出现的索引

>>> lst = ['a', 'b', 'c', 'a', 'c']
>>> lst.index('c')
2

7、insert

将一个对象插入列表

>>> numbers = [1, 2, 3, 5, 6]
>>> numbers.insert(3, 'four')
>>> numbers
[1, 2, 3, 'four', 5, 6]

8、pop

从列表尾部删除一个元素,并返回这一元素。

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

9、remove

用于删除第一个为指定值的元素

>>> x = ['a', 'b', 'c', 'd', 'a']
>>> x.remove('a')
>>> x
['b', 'c', 'd', 'a']

10、reverse

反向排列列表中的元素

>>> x = [1, 2, 3]
>>> x.reverse()
>>> x
[3, 2, 1]

11、sort

对列表进行排序

>>> x = [4, 6, 2, 20, 8, 3, 9]
>>> x.sort()
>>> x
[2, 3, 4, 6, 8, 9, 20]

高级排序

3、元组

元组与列表唯一的差别在于元组不能修改

元组只有一个元素时,必须咋后面加上逗号:  (1, )

函数tuple的工作原理与list相似。 将一个序列作为参数,并将其转换为元组

>>> tuple([1,2,3])
(1, 2, 3)

元组的切片也是元组

元组也并非完全不能修改,如果元组中含有列表,则元组中的列表是可以修改的。

>>> a = (1, 2, 3, [4, 5, 6])
>>> a[3].append(7)
>>> a
(1, 2, 3, [4, 5, 6, 7])

内容参考: python基础教程(第3版)

你可能感兴趣的:(读书笔记,python)