05 python 列表与元组 切片操作

05 python 列表与元组

列表

列表是有序的元素集合,所有元素放在一对[ ]之中,用,隔开,无长度限制
列表索引以0位开始,-1表示末尾开始的位置
列表可以使用+进行拼接,*表示重复
列表元素增加或删除时,列表对象自动进行扩展或内存收缩,保证元素之间没有缝隙

列表元素可以通过索引访问单个元素,就像数组那样
e.g. a[3]

列表可以完成大多数集合类数据结构的实现
列表中的元素类型可以不相同,它支持数字,字符串、元组,集合、字典等甚至包括列表(嵌套)

列表元素的修改:

列表大小没有限制,可以随时修改,元素也可随时修改
a.insert(0,1) 在0位置插入1
修改 a[0]=10

列表基本操作 (假设列表为a)

“+” 连接两个列表
a*整数 对列表进行整数次重复
a[2] 引用列表中的元素
len(a) 列表中元素的个数
a[1:3] 切片,取列表的子序列 包括1,不包括3
for 值 in a 对列表进行循环列举
expression in a 判断expression 是否在列表中

列表的相关方法

a.append(x) 把x加到a的最后
a.sort() 将a中元素排列.大小排序
a.sort(key=str) 按所有元素转化成字符串后的大小进行排序,即字典序排列
a.reverse() a中元素反转
a.index(x) 返回第一次出现x的索引值
a.insert(i,x) 在i位置插入x
a.count(x) 求x数量
a.remove(x) 删除第一次出现的元素x,无返回值
a.pop(i) 取i位置元素并删除它,不带参数,删除最后一个元素
a.expand([6,7]) 在原来列表上追加新列表
a.clear() 清除列表
a.copy() 生成一个新列表,复制a中的值
sorted(a)可以对列表进行排序

在这里插入图片描述

创建列表

list((3,5,7,9,11)) 将元组转换为列表
list(range(1,10,2))range对象转换为列表
list('he llo') 将字符串转换为列表,每个字符转换为列表中的一个元素 空格标点符号都会转化为一个元素
list({
    
    3,5,7}) 集合转为列表 结果为[3,5,7]
x=list() 空列表
del x 删除列表对象,删除之后无法访问

利用索引访问列表,注意不要越界

print(a)打印a中所有元素
print(a[-1])打印列表中最后一个元素

列表推导式

data = [2**i for i in range(64) ]
等价于 
data=[]
for i in range(64):
	data.append(2**i)

即从20到263的列表

data = [num for num in range(20) if num%2==1]
等价于
data=[]
for num in range(20):
	if num%2==1:
		data.append(num)

奇数列列表

元组

基本概念

元组是包含多个元素的类型。元素之间用逗号分隔。
如:t=(123,4,“h”)
可以通过把若干元素放在一对圆括号中创建元组。如果只有一个元素的话,则需要多加一个逗号
(3,)
也可以tuple()函数使用函数把列表、字典、集合、字符串以及range对象,map对象,zip对象或其他类似对象转换为元组。
元组可以是空的。t2=()
一个元组也可以作为另一个元组的元素,此时作为元素的元组需要增加括号。从而避免歧义。
t=(123,4,(“hl”,5))
元组中各元素存在先后关系。可以通过索引访问元组中的元素。
T[0]
元组定义后不能更改也不能删除。
与字符串类型类似,可以通过索引区来访问元组中的部分元素。
t3[1:]
与字符串一样,元组之间可以用加号和乘号进行运算。
在这里插入图片描述
这里面1,2就是一个元组

元组和列表的区别

元组是不可变的,不能直接修改元组中元素的值。也不能为元组增加或删除元素。因此,元组没有提供的append(),expand(),insert(),等方法,也没有remove()和pop()方法。
元组的访问速度比列表更快,开销更小。如果定义了一系列常量值,主要用途只是对它们进行遍历或其它类似操作。那一般建议使用元组而不用列表。
元组可以使得代码更加安全。例如调用函数时使用元组传递参数,可以防止在函数中修改元素,而使用列表则无法保证这一点。
元组可用作字典的键,也可以作为集合的元素,但列表不可以,包含列表的元组也不可以。

生成器表达式

gen =(2**i for i in range(8))  创建生成器对象。生成二的零次方,二的一次方,一直到二的七次方。
print(gen)
print(list(gen))转换为列表。用完了生成器对象中的所有元素。
print(tuple(gen))转换为元组得到空元组。
#gen作为List函数的参数传入使用,使用之后,他就为空了。这个生成器对象就已经为空,所以生成的元组为空元组。

生成器表达式中的元素在使用一次之后就会失效。只能使用一次。

切片操作

适用于列表和元组。
切片是用来获取列表元组,字符串等有序序列中部分元素的一种语法。在形式上切片使用两个冒号分隔的三个数字来完成。
[start:end:step]其中start默认为零。
Step默认为一。刚step为负整数时,表示反向切片。此时start应该在end的右侧。
end表示不包括end。
当只有一个冒号时返回所有元素的副本。例子:a[:]
a[3:]下标3之后的所有元素,这里面不包括下标三这个元素。
a[-3:] 最后3 个元素
a[:-5] 除最后五个元素以外的所有元素。
a[: :3]每三个元素选一个。

元组的应用

如果不希望数据被修改,将其写成元组类型

列表和元组,其实就是序列的派生类形式,这里进行总结

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bj_zhb/article/details/104626481