Python基础语法03:
1.4 复合类型:
Python中支持的复合类型可以将多种不同的值组合起来
常见的复合类型有:
1.列表
2.元组
3.字典
1.4.1列表类型:
列表是用方括号标注、逗号分隔的一组值,可以包含不同类型的元素的一种数据容器:
- 列表内的数据有先后顺序关系
- 列表是可变的容器
x=[] #创建了一个空列表
x=[1,2,3,4,5] #在其他语言中这个叫做数组,在python中叫做列表 python中数组有其他定义
列表可以放任何数据
#列表里面还可以放列表
x=[[10,20,30],"hello",10,]
1.4.1.1列表的创建:
字面量(直接创建一个列表)
例如:
L = [] # 创建一个空的列表
L = ['成都', '昆明', '贵阳', '重庆'] # 创建一个含有4个字符串的列表
L = [1, 'Two', 3.14, True, False, None]
L = [1, 2, [3.1, 3.2], 4] # 含有四个元素的列表,第三个元素是列表
L2 = [
['姓名','语文成绩','数学成绩'],
['小明', 90, 100],
['小王', 59, 26]
]
构造函数创建列表
list( )函数可以传入一个可迭代对象,用于创建列表中的数据
x=list("hello")
x=list([10,20,30])
x=list(range(1,10))
1.4.1.2 列表的运算
列表的运算与字符串的运算类似
x=[1,2,3,4,5]
y=[6,7,8,9,10]
#将两个列表的数据拼接起来
print(x+y)
#将列表重复3次,不能乘浮点数
print(x*3)
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
x=[1,2]
y=[1,2]
#判断两个列表每一个位置对应元素是否相等
print(x==y)
#判断两个列表每一个位置对应元素是否不相等
print(x!=y)
#判断某个元素是否在列表中
print(1 in x)
输出:
True
False
True
1.4.1.3 列表的访问
1.4.1.3.1 索引
L = [1, 2, 3, 4, 5, 6]
print(L[0]) # 1
print(L[-1]) # 6
列表的访问与字符串一样都是通过索引进行访问
可以正向访问(从下标为0的元素开始从左往右访问)
可以反向访问(从下标为-1的元素开始从右向左访问)
1.4.1.3.2 切片
列表[(开始索引b):(终止索引e)(: (步长s))]
list = ['enjoy', 'your', "life", "good", "time"]
# 读取第二位
print (list[1])
# 从第二位开始(包含)截取到倒数第二位(不包含)
print (list[1:-2])
# 从下标2开始(包含2)到最后一个
print (list[2:])
# 从下标0开始到下标3结束(左闭右开)
print (list[:3])
a=[[0,1,2,3],
[0,1,2,3],
[0,1,2,3],
[0,1,2,3]]
x=a[:][3]
print(x)
输出:
your
['your', 'life']
['life', 'good', 'time']
['enjoy', 'your', 'life']
[0, 1, 2, 3]
1.4.1.4 列表操作
x=[10,20,30]
#append()函数可以往列表的末尾添加元素,返回值为None
re=x.append(40)
print(re)
x=[1,2,3,4]
#extend()函数可以往列表末尾添加多个元素
#返回值为None,不会改变原列表的位置
re=x.extend([1,40])
#id()函数
#id()函数可以查看变量的内存地址
print(id(x))
#insert()函数
#insert()函数可以往列表指定位置添加元素
x=[1,2,3,4]
re=x.insert(2,40)
print(x)
#修改列表的数据
x=[1,2,3,4]
x[2]=40
print(x)
#存取修改不能越界
#切片可以越界,相当于越界的未保存值
#切片赋值必须赋值可迭代对象,否则会报错
x[1:3]=[666,777,88,9] #用等号后面的容器数据 来替代列表原位置上的值
#删除列表数据
x=[1,2,3,4]
re=x.remove(2)
print(x)
#pop() 删除指定位置的值
x=[1,2,3,4]
x.pop(2)
print(x)
#clear()
#将列表清空
x.clear()
#最常用 简便方法
x=[1,2,3,4]
x=[]
x=[1,2,3,4]
print(x)#内存会释放掉原来的列表
#del
#删除x变量,使用del删除之后如果再调用变量x会报错
x=[1,2,3,4]
del x
print(x)
#删除指定下标的值
x=[1,2,3,4]
del x[2]
print(x)
#获取列表长度
x=[1,2,3,4]
n=len(x)
#获取列表最大值和最小值
m=max(x)
print(m)
m2=min(x)
print(m2)
#获取列表中某个值的索引
print(x.index(3))
target=x.index(max(x)) #可以用来获取某个列表中最大值的索引
1.4.2 元组
tuple
元组用来储存有序数据,多个值用逗号隔开,元组中的值可以重复,但是元组中的值不能修改。
- 元组使用小括号 ( ),日常使用时可以省略;
- 元组的元素多为不可变的,通过解包或索引访问;
- 列表的元素多为可变的,可迭代访问;
1.4.2.1 元组的创建
创建元组的字面值
用小括号() 括起来,单个元素括起来后加逗号来区分单个元素还是元组
x=() #空元组
x=(1,) #元组只有一个元素的时候,需要加逗号,否则会报错。
x=(1,2,3)
x=10,20,30 #常见于函数返回数据的时候,可以省略括号。
创建元组的函数
x=tuple([1,2,3])
x=tuple("hello")
1.4.2.2 元组的操作
元组没有常见的删除方法
只能用关键字del删除整个元组
#元组的操作
x=(1,2,3,4,5,6,7,8,9,10)
print (x)
del tup
print (tup) #name 'tup' is not defined
元组不支持修改内部的元素
解构赋值: 按照等号左边的结构来分配元组或者列表的元素。
解构赋值左右的结构必须一样,一一对应
x1,x2=(1,2) #同时声明了两个变量 X=t[0] x2=t[1]
x1,x2=[100,200]
元组可以像列表一样通过下标切片等方式来进行查看
tup1 = ('python', 'love', 100, 200)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print (tup1[0])#python
print (tup2[1:5])#(2, 3, 4, 5)
print (tup2[:4])#(1, 2, 3, 4)
print (tup2[2:])#(3, 4, 5, 6, 7)
1.4.2.3 元组运算
元组中的元素值是不允许修改的,但可以对元组进行连接组合
tup1 = (12, 34.56)
tup2 = ('abc', 'efg')
# 创建一个新的元组
tup3 = tup1 + tup2
print (tup3)
t = (1, 2, 3) + (4, 5, 6)
t += (7, 8, 9) # 等同于 t = t + (7, 8, 9)
t = t * 2
t *= 2
5 in t
1.4.2.4 元组不可变
不可变指的是变量指向的内存中的内容不可变,但是变量的指向是可以改变的。
tup = (1, 2, 3, 4, 5, 6, 7)
tup[1] = 100
print(tup)
#报错'tuple' object does not support item assignment
变量是可以重新赋值的
tup1 = (12, 34.56)
tup1 = (12, 100)
tup1
元组常用API
x=(1,2,3,4,5,6,7,8,9,10)
#返回元组中元素个数。
print(len(x))
#返回元组中元素最大值。
print(max(x))
#返回元组中元素最小值。
print(min(x))
1.4.3 字典
字典 是可以修改数据的 一种保存数据的容器
列表的元素保存在对于的下标处 字典的元素没有按顺序的下标 字典的下标是自己创建的
1.4.3.1 字典的创建
#创建空字典
d1={}
#创建字典的字面量
d2={
"name":"张三",
"age":18,
"sex":"男"
}
print(d2)
d2["name"]="李四"
字典的key必须是唯一的,如果key重复,后面的会覆盖前面的。字典的key必须是不可变的,比如字符串,元组,但是字典的value可以是任何类型。
字典的value也可以是字典
d2={
"name":"张三",
"age":18,
"sex":"男",
"address":{
"province":"北京",
"city":"北京",
"street":"北京"
}
}
x="hello"
y=(10,20)
d1={x:10, y:20}
#用dic创建字典
X=dict()
x=dict([(1,20),(2,30),(3,40)])
1.4.3.2 字典操作
增、删、改、查
1.4.3.2.1 增加或修改
添加和修改字典的元素
-
语法
字典[键key] = 表达式键不存在, 就添加
键存在, 会覆盖掉之前的值
-
示例
d = {} d['name'] = 'tarena' # 添加键值对 d['age'] = 18 # d = {'name': 'tarena', 'age': 18} d['age'] = 19 # 改变键对应的值
1.4.3.2.2 访问值
- 字典的键索引
通过字典的键来进行访问
-
示例
d = {'one': 1, 'two': 2} print(d['two']) -
不能访问不存在的键
mydic = {'Name': 'ye', 'Age': 46, 'Class': 'First'} print (mydic['drake']) # KeyError: 'drake'
1.4.3.2.3 in和not in
in用于判断一个键是否存在于字典中,存在返回True, 否则返回False
-
示例
d = dict(a=1, b=2) # d = {'a': 1, 'b': 2} print('a' in d) # True print(1 in d) # False print('hello' not in d) # True
1.4.3.2.4 删除元素
可以只删除元素,也可以直接用del删除整个字典
- 语法
del 字典[键]
- 示例
dic = {'Name': 'rose', 'Age': 7, 'Class': 'First'}
del dic['Name'] # 删除键 'Name'
dic.clear() # 清空字典
print (dic['Age'])
print (dic['School'])
del mydic # 删除字典,无法再访问
1.4.3.3 字典特性
-
字典的键具有唯一性,不允许同一个键出现两次,否则后一个覆盖前一个
mydic = {'Name': 'jack', 'Age': 27, 'Name': 'karen'} print (mydic['Name']) -
键必须不可变,可以用数字、字符串或元组,列表不能作为键
dic1 = {11:"a",22:"b"} dic2 = {"name":"jack","age":20} dic3 = {['Name']: "jack", 'Age': 20} print(mydic3[['Name']]) #报错unhashable type: 'list'

8669

被折叠的 条评论
为什么被折叠?



