列表
1.创建
x=[1,2,3,4,5,6,7,8,9,10]
print(x)
或者是
y=['a','b','c','d','e','f','g','h']
print(y)
2.访问
(1)取出一个元素
x[0] #取出第0号,即List里第一个元素
(2)取出多个连续元素
通过两个索引值实现,第一个索引是取出的第一个元素,第二个索引是剩下的第一个元素,也就是包含第一个,不包含第二个
x[0:1] #相当于取出第一个元素 相当于x[0] 即:1
x[-3:] #此处用到了简写,省略第二个索引,表示直到List最后一个元素
x[:3] #取出从开始元素,到2号位置的元素
x[:] #取出全部元素
两个索引的差值是取出来的元素数
切片时,包含开始索引元素,不包含结束索引元素
用负索引从列表的后端顺序取值
可以省略开头和结束元素,简写
(3)带步长取出元素
前面没有显式的给出步长,是因为默认的步长是1
即:x[0:10:1] 相当于 x[0:10]
正序取出
x[0:8:2]
逆序取出
从右向左提取元素,开始元素和结束元素也要是逆序,即开始元素在右、结束元素在左
x[8:3:-2]
- 前面的如x[-3:-1]本质上还是从左向右去 第一个元素索引值小于第二个元素索引值,因为步长是正1
- 而这里的x[8:3:-1] [9,8,7,6,5] 取出来的元素结果是从右向左的,第一个元素索引值大于第二个元素索引值,因为步长是-1
- 列表取出的元素顺序与索引正负无关,与步长的正负值有关
3.修改元素值
(1)单个元素赋值
a=[1,2,3,4,5]
a[2]=0
a
(2)一次赋值多个元素(替换)
4.删除元素
(1)根据索引
(2)有返回值
使用pop可实现一种常见的数据结构——栈(stack)。
栈就像一叠盘子,你可在上面添加盘子,还可从上面取走盘子。最后加入的盘子最先取走,这被为后进先出(LIFO)。
push和pop是大家普遍接受的两种栈操作(加入和取走)的名称。Python没有提供push,但可使用append来替代。
方法pop和append的效果相反,因此将刚弹出的值压入(或附加)后,得到的栈将与原来相同。
push和pop是大家普遍接受的两种栈操作(加入和取走)的名称。
Python没有提供push,但可使用append来替代。
方法pop和append的效果相反,因此将刚弹出的值压入(或附加)后,得到的栈将与原来相同。
(3)删除为指定值的元素
5.插入元素
(1)末尾追加
x=[1,2,3]
x.append(4) # 追加元素
x
x=[1,2,3]
y=[4,5]
x.extend(y) #追加序列
x
不管是追加元素还是序列,序列x本身发生改变,这也就是为什么后面会有copy函数的原因。
数组名表示的是指向内存的指针,List也是一样,List的名字只是数组本身的一个名字而已 使用拼接(拼接后生成新List,xy不变,且只能拼接同数据类型的List)
x=[1,2,3]
y=x #x,y 都是指向数组内存的指针,也就是这个数组的名称,把x赋给y后,x,y指向相同的List,因此,x,y代表相同的数组
del x[1] #如果要实现类似 变量赋值的操作,就得用copy函数,建立副本,这就是存在copy函数的原因
y
a=[1,2,3]
b=[4,5]
a[len(a):]=b #切片虽然可行,但可读性不是很高,比起直接用extend函数,繁琐了很多,赋值的切片必须是List类型
a
(2)中间插入
6.清空列表
x=[1,2,3]
x.clear() #相当于x[:]=[]
x
7.复制列表
前面说过,使用赋值符号进行赋值,只是将一个名称关联到这个列表,如果想要达到变量赋值的效果,就要使用copy方法
对比一下两种结果:
8.成员资格(判定特定值是否包含在序列中)
9.计算指定的元素在列表中出现了多少次
10.查找指定值第一次出现的索引
11.逆序排列元素
12.元素排序
13.高级排序
方法sort接受两个可选参数:key和reverse。这两个参数通常是按名称指定的,称为关键字 参数。参数key类似于参数cmp:你将其设置为一个用于排序的函数。然而, 不会直接使用这个函数来判断一个元素是否比另一个元素小,而是使用它来为每个元素创建一个 键,再根据这些键对元素进行排序。因此,要根据长度对元素进行排序,可将参数key设置为函数len。
元组
与列表一样,元组也是序列,唯一的差别在于元组是不能修改的
创建
值得注意的是:
为何要熟悉元组呢?原因有以下两个。
它们用作映射中的键(以及集合的成员),而列表不行
有些内置函数和方法返回元组,这意味着必须跟它们打交道。只要不尝试修改元组,与 元组“打交道”通常意味着像处理列表一样处理它们(需要使用元组没有的index和count 等方法时例外)。
一般而言,使用列表足以满足对序列的需求。
序列常用函数