元祖 tuple
元祖是不可改变的序列,同list一样,元祖可以存放任意类型的元素
元祖和列表一样内、可以放任意类型的元素
表示方法:
用()小括号括起来,每个元素括起来之后加逗号(,)
区分单个对象还是元祖
创建空元祖的字面值
t=()
创建非空元祖的字面值
t=200,
t=(20,)
t=(1,2,3)
t=100,200,300
type(x) 用来返回x的类型
错误示例:
t=(20)
x,y,z=100,200,300 序列赋值
x,y,z=(100,200,300) 序列赋值
x,y,z=[100,200,300] 序列赋值
x,y,z=“asd” 序列赋值
元祖的构造(创建)函数
tuple() 生成一个空元祖,等于()
tuple(iterable) 用可迭代对象生成一个元祖 tuple(“hello”)
t=tuple([1,2,3,4])
t=tuple((1,2,3,4))
元祖的运算
算术运算:
, + += * *=
比较运算
< <= > >= == !=
in / not in 运算
索引和切片
元祖的索引和切片等同于列表的索引和切片
元祖的切片返回一个元祖
元祖不能索引赋值和切片赋值、
T.count(value) 返回元素个数同list.count
T.index(value,[strat,[stop]])
返回元素在元祖索引的位置(同list.index)
思考:
元祖里能否存入列表?即:
t=(1,2,3,4,[3.1,3.14])
字典:dict
-
字典是一种可变容器,可以存储任意类型的数据
-
字典中的每个数据都是用键(key)进行索引
-
字典的顺序没有前后顺序关系,字典的顺序是无序的
-
字典的数据以键(key)-值(value)对进行映射存储
-
字典的键不能重复,且只能用不可变类型作为字典的键
字典的字面值表示方式:
用{}括起来,以冒号(:)分割建—值对,各键值对用分号分隔开
创建空字典
d={}
创建非空字典:
d={“name”:“tarena”,“age”:“15”} -----有两个元素
d={“姓名”:“小张”}
d={1:“壹”,2:“贰”}
一切不可变类型都能作为字典的键
d={(1,2,3):“1qwesdfGD”} -----------可以,元祖是不可变类型可以用来做为键
d={[1,2,3]:“wefeg”} --------不可以!!! 列表是可变类型不可以用来做键
d={“a”:{1:“dfd”,2:“we”}} 任意容器类可以自由组合
字典的构造函数
dict()创建一个空字典
dict(iterable)用可迭代兑现初始化字典
dict(**kwargs)关键字传参形式生成一个字典
示例:
d=dict()
d=dict([(“name”,“tarena”),(“age”,15)]) ---------{‘name’: ‘tarena’, ‘age’: 15} 列表可迭代
d=dict(name=“tarena”,age=15)
d=dict((“as”,“df”)) --------{‘d’: ‘f’, ‘a’: ‘s’}
不可变类型:
int float complex bool str tuple frozenset(固定集合) bytes(字节串)
可变类型:
list dict set bytearray(字节数组)
字典的基本操作
用[ ]运算符可以获取字典内“键”所对应的“值”,用键来寻找值
语法:
字典[键]
获取数据元素
d=dict(name=“tarena”,age=15)
print(d[“age”]) #15
添加/修改元素
字典[键]=表达式
示例:
d={} 创建空字典
d[“name”]=“tarena” 创建一个新键值对
d[“age”]=15 创建键值对
d[“age”]=16 改变键值对
删:
del 语句 删除字典的元素
语法:
del 字典[键]
示例:
d={“name”:“china”,“pos”:“asd”}
del d[pos]
print(d)
del d[name]
print(name)
字典的in/not in 运算符
(用 in 仅能判断键是否在字典中如果存在则返回true,否则返回false
not in 与in 返回值相反
示例:时间 快于 list
d={1:2,2:“23”,3:“sdfl”}
1 in d True
“23” in d False
“cd” not in d False
3 in d True
字典的迭代访问(任何容器类都是可迭代对象)
字典是可迭代对象,字典只能对键进行迭代访问
d={“name”:“tarena”,(1997.8.2):“生日”}
for x in d:
print(x)
for x in d:
… print(x,d[x])
可以用于字典键的内建函数 (只看键,不看值)
len(x) 返回键的键值对个数
max(x) 返回键的最大值
min(x) 返回键的最小值
sum(x) 返回字典内所有键的和
any(x) 真值测试 只对键 如果其中一个键为真,结果为True
all(x) 真值测试 只对键 全部键为真,结果为True
字典的方法
.pop()
.clear()
.items()
.keys()
.values()
.get()
.update()
.copy()
练习:
写程序,实现如下需求
将如下程序,形成一个字典seasons
“键” “值”
1 “春季有1,2,3月”
2 “夏季有4,5,6月”
3 “秋季有7,8,9月”
4 “冬季有10,11,12月”
让用户输入一个整数代表这个季度,打印这个季度的信息,如果用户输入的信息不存再字典的键内,则返回不存在
seasons={
1:"春季有1,2,3月",
2:"夏季有4,5,6月",
3:"秋季有7,8,9月",
4:"冬季有10,11,12月"
}
i=int(input("请输入键值(1-4):"))
if i in seasons:
print(seasons[i])
else:
print("输入有误!")
写程序,输入一段字符串,打印出这个字符串中出现过的字符以及出现过的次数
如:
输入:ASDSFGSGAG
输出:
A:2
B:0
C:0
s=input("请输入一段字符串:")
for x in s:
print(x,":",s.count(x),"次")
字典推导式
字典推导式是用可迭代对象一次生成字典内元素的表达式
语法:
{键表达式:值表达式 for 变量 in 可迭代对象 [if 真值 表达式]}
[ ]内部可以省略
示例:
d={x:x**2 for x in range(10)}
练习
1.有字符串列表如下:
l=[“tarena”,“xiangzheng”,“xiaoming”]
生成如下字典:
d={“tarena”:6,“xiangzheng”:10,“xiaoming”:9}
l=["tarena","xiangzheng","xiaoming"]
d={}
for x in l:
if x not in d :
d[x]=len(x) #键=值
print(d)
2.列表编号如下:
Nos=[1001,1002,1003,1004]
names=[“Tom”,“Jerry”,“Spike”,“Tyke”]
生成 用Nos数据为键,以names为值的字典,如下:
{1001:“Tom",1002:“Jerry”,1003:“Spike”,1004:“Tyke”}
练习:
1、写一个程序,输入一些单词和解释,将单词作为键,将解释作为值,将这些数据存于字典中
然后:
输入查询的单词,显示出此单词的解释
a=[]
b=[]
d=dict()
while 1:
i=input("请输入单词:")
e=input("请输入解释:")
if i=="":
break
if i not in a:
a.append(i)
if e not in b:
b.append(e)
d={x:b[a.index(x)] for x in a }
c=input("请输入要查询的单词:")
for x in d:
if c==x:
print(d[x])