元组和序列
元组由若干逗号分隔的值组成,例如:
t = 12,13,14
print(type(t))
print(t)
print(t[0])
运行结果:
如你所见,元组在输出时总是有括号的,以便于正确表达嵌套结构。在输入时可能有或没有括号, 不过括号通常是必须的(如果元组是更大的表达式的一部分)。
集合
集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。
可以用大括号({})创建集合。注意:如果要创建一个空集合,你必须用 set() 而不是 {} ;后者创建一个空的字典,下一节我们会介绍这个数据结构。
以下是一个简单的演示:
#创建空集合需要用Set()
S = set()
print(type(S))
#集合消除重复数据
S = {1,1,1,1,2,3,4,5}
print(S)
运行结果:
集合也支持推导式:
#集合推导式
S2 = {x for x in S if x > 2}
print(S2)
运行结果:
字典
另一个非常有用的 Python 内建数据类型是字典。
序列是以连续的整数为索引,与此不同的是,字典以关键字为索引,关键字可以是任意不可变类型,通常用字符串或数值。
理解字典的最佳方式是把它看做无序的键=>值对集合。在同一个字典之内,关键字必须是互不相同。
一对大括号创建一个空的字典:{}。
这是一个字典运用的简单例子:
# 这是一个空字典
mydict = {}
print(type(mydict))
print(mydict)
# 往字典中增加键值对
mydict['z'] = '1'
mydict['f'] = '2'
mydict['q'] = '3'
print(mydict)
# 修改某个键值对
mydict['z'] = '5'
print(mydict)
# 删除某个键值对
del mydict['z']
print(mydict)
# 输出字典中所有键以列表的形式
print(list(mydict.keys()))
运行结果:
构造函数 dict() 直接从键值对元组列表中构建字典。如果有固定的模式,列表推导式指定特定的键值对:
# 构造函数构造字典
S3 = dict([(1,'z'),(2,'f'),(3,'q')])
print(S3)
运行结果:
此外,字典推导可以用来创建任意键和值的表达式词典:
# 字典推导式应用
S4 = {x:x**3 for x in (2,3,4,5)}
print(S4)
运行结果:
如果关键字只是简单的字符串,使用关键字参数指定键值对有时候更方便:
# 键值对创建字典
S5 = dict(z = 1,f = 2,q = 3)
print(S5)
运行结果:
遍历技巧
在字典中遍历时,关键字和对应的值可以使用 items() 方法同时解读出来:
# 遍历字典1
mydict = {'q':'zfq','h':'zzh'}
for k,v in mydict.items():
print(k,'对应:',v)
运行结果:
在序列中遍历时,索引位置和对应值可以使用 enumerate() 函数同时得到:
# 遍历序列1
mylist = ['zzf','zzd','zza']
for i,v in enumerate(mylist):
print(i,'对应:',v)
运行结果:
同时遍历两个或更多的序列,可以使用 zip() 组合:
# 同时遍历两个或更多的序列,可以使用 zip() 组合:
mylist1 = ['zfq','zfw','zfe']
mylist2 = ['zzh','zza','zzq']
for a,b in zip(mylist1,mylist2):
print(a,'对应:',b)
运行结果:
要反向遍历一个序列,首先指定这个序列,然后调用 reversed() 函数:
# 要反向遍历一个序列,首先指定这个序列,然后调用 reversed() 函数
mylist3 = [1,2,3,4,5,6,7,8,9]
for i in reversed(mylist3):
print(i)
运行结果:
要按顺序遍历一个序列,使用 sorted() 函数返回一个已排序的序列,并不修改原值:
# 要按顺序遍历一个序列,使用 sorted() 函数返回一个已排序的序列,并不修改原值:
mylist4 = [3,1,2,3,11,3,6,7,5,9]
for i in sorted(mylist4):
print(i)
运行结果: