1 python中的容器的概念
python中的容器
|-----序列(用索引标识每个元素)
| |-----列表、元组、字符串
|-----映射(每个元素包含key)
| |-----字典
|-----集合
|------Set
注意:列表和元组的不同?
列表可以修改(如插入元素),而元组不可以修改。
2 python序列中常见的操作
序列的操作有:索引、切片、相加、相乘和成员检查
2.1 索引
序列中的每个元素都有索引,从0开始编号,-1表示最后一个元素的位置
题?
year=input("year:")
print(year[3])
2.2 切片
通过切片获取指定范围的元素
序列对象[起始索引:结束索引:步长]
步长默认为1
例如:
#定义列表
x=[1,2,3,4,5,6,7,8,9,10]
#得到所有列表值
y=[::]或y[::]
#得到倒序列表值
x=[::-1]
思考以下结果?
x[7:10]
x[-3:-1]
x[-3:]
x[:-3]
x[-3:0]
注意:步长为负数表示从右向左取值
y=x[8:3:-1]
结果是:
[9,8,7,6,5]
思考题
y=x[::-2]
y=x[5::-2]
y=x[:5:-2]
2.3 相加
可以使用“+”运算符拼接序列
x=[1,2]+[3,4]
注意:
只能拼接相同类型的序列
x=[1,2]+"abc" #error
2.4 相乘
序列与一个整数n相乘,创建一个重复n次的序列
注意:
None在python表示什么都没有
x=[None]*3
结果:
[None,None,None]
2.5 成员检查
序列使用in操作符号检查是否包含没有元素, 返回True或False(python支持的布尔类型)
y=8 in [1,3,5]
结果
False
2.6 内置简单的支持序列的函数
x=[3,2,5]
mLen=len(x)
mMax=max(x)
mMin=min(x)
3 列表
列表形式
x=[1,2,3]#有点像java中的数组呢
3.1 基本操作之ABC
A:按索引修改列表值
x=[1,2,3]
x[1]=8
B:按索引删除元素
del x[1]
C: 切片赋值
x[1:]="hello"
注意:
利用切片插入元素,例如
x[0:0]="hello"
利用切片删除指定范围的元素
x[1:3]=[]
练习:
请将x=[1,2,3,4]修改成[1,'o','k',4]
特别提示
String类型并不是列表,python中String类型与列表类型转换
y=list('istudypython')
print(y)
str=','.join(y)
print(str)
3.2 常规操作
1) append
将对象追加到列表的后面
x=[1,2,3]
x.append("bee")
结果:
[1, 2, 3, 'bee']
2) clear
清空列表
3) copy
复制列表副本
练习
x=[1,2,3]
y=x
y[1]=8
查看x和y列表的结果
如果将赋值替换成copy函数,查看结果
x=[1,2,3]
y=x.copy()
y[1]=8
4) count
统计对象在列表元素中的出现次数
练习
x=[1,[2,3],2,[3],4,2]
y=x.count(2)
y的结果?
5) extends
extends操作在原列表的尾部将对象插入
x=[1,2,3]
x.append([5,6])
print(x)
结果
[1,2,3,[5,6]]
注意:
append和extends区别
append将元素当做一个完整对象追加到列表后面并生成一个新的列表元素;
extends将元素分解后添加列表后,可能会生成多个元素;
思考:
试说明列表的append操作和+操作的区别?为什么append效率高于+操作?
6) index
index方法用于查询对象第一次在列表中出现的位置, 找不到将报错
x=[1,2,8]
y=x.index(8)
7) insert
在指定索引位置插入元素
x=[1,2,3,4]
x.insert(2,5)
print(x)
结果:
1,2,5,3,4
练习:
写出与上面insert方法等同的操作
8) pop
从列表中删除一个元素,并返回该元素,默认返回最后一个元素
x=[1,2,3,4]
y=x.pop(1)
print(x)
print(y)
结果:
[1, 3, 4]
2
9) remove
删除列表中第一个指定的元素,如果找不到则报错
例:
data=[3,5,9]
data.remove[9]
结果
[3,5]
10) reverse
反转列表中的值
11) sort
将列表按从小到大就地排序
注意:
sort方法将原列表排序后,并没有返回排序后的列表,而是返回None;
可以使用sorted函数完成排序,并返回排序后的列表
12) 带参数的sort
可以为sort添加key和reverse关键字参数
A:key表示使用key指定的函数对列表进行排序
例如:key关键字指定了len函数,则排序结果按元素的长度进行排序
x=['wc','apple','bike','z']
x.sort(key=len)
print(x)
结果
['z', 'wc', 'bike', 'apple']
B:reverse关键字取值True或False,表示是否对按相反顺序进行排序
x=[8,2,9,7,6]
x.sort(reverse=True)
print(x)
结果
[9, 8, 7, 6, 2]
4 元组
4.1 元组的声明
元组与序列的差别是,不能修改;
元组声明的几种方式
A: x=1,2,3
B: x=(1,2,3)
C: x=3,
练习
x=3*(8+1)
y=3*(8+1,)
查看x和y的结果?
4.2 元组的tuple函数
tuple函数的作用是将一个序列转换成元组,并返回该元组
x=tuple([1, 2, 3])
print(x)
结果
(1, 2, 3)y=tuple('abc')
print(y)
结果
('a', 'b', 'c')