数据结构
python里有4个内建的数据结构——list(列表),tuple(元组),dictionary(字典),set(集合) ,他们可以统称为“容器”
这四个“容器”里面的“东西”可以是数字、字符、列表或者他们之间的组合,什么都行,而且元素类型不要求相同
1、列表/元组
列表和元组都是序列结构
外形:
列表:[]
元组:()
c = [1,'abc',[1,2]] #c是一个列表,列表的第一个元素是整数1,第二个是字符串'abc',第三个是列表[1,2]
c
功能区别:
列表可以被修改,而元组不可以。
a = [1,2,3]
print(a)
a[0] = 0
print(a)
b = (1,2,3)
print(b)
b[0] = 0 #修改报错
print(b)
如果已经有了一个列表a,想要复制a,并命名为b,那么b=a是无效的,这时候b仅仅是a的一个别名(或者叫引用),修改b也会修改a;
如果想要复制a,就使用b = a[:]
a = [1,2,3]
print("原来的a:",a)
b = a
print("原来的b:",b)
b[0] = 0
print("现在的a:",a)
print("现在的b:",b)
a = [1,2,3]
print("原来的a:",a)
b = a[:]
print("原来的b:",b)
b[0] = 0
print("现在的a:",a)
print("现在的b:",b)
函数:
将某个对象转换为列表/元组
列表:list()
元组:tuple()
list('ab')
tuple([1,2])
与列表/元组有关的函数:
作为对象来说,列表本身自带了很多实用的方法,元组不允许修改,因此方法很少
列表本身自带的方法:
#使用append函数对列表元素进行操作
a = [1,2,3]
b = []
for i in a:
b.append(i+2)
print(a)
print(b)
#使用列表解析进行简化
a = [1,2,3]
b = [i+2 for i in a]
print(a)
print(b)
2、字典
“字典”与列表和元组不同,它的下标不是从0开始,而是自己定义的键,且键在整个字典中必须是唯一的
#创建一个字典
d = {
'today':13,'tomorrow':14} #这里的today,Tomarrow就是字典的键,它在整个字典中必须是唯一的;13,14是“键”对应的值
d
#访问字典中的元素
print(d['today'])
print(d['tomorrow'])
#通过dict()或者dict.fromkeys创建字典
dict([['today',13],['tomorrow',14]]) #相当于{'today':13,'tomorrow':14}
dict.fromkeys(['today','tomorrow'],15) #相当于{'today':15,'tomorrow':15}
很多字典相关的函数和方法与列表相同:
3、集合
与列表的区别:①它的元素不能重复,而且是无序的;②它不支持索引
通过**{}或者set()**函数来创建一个集合
s = {
1,2,2,3} #注意2会自动去重,得到{1,2,3}
print(s)
t = [1,2,2,3] #将列表转换为集合,也会的到去重后的{1,2,3}
s = set(t)
print(s)
由于集合具有的特殊性,因此集合有一些特别的运算:
t = {
1,2,3}
s = {
1,4,5}
a = t|s #t和s的并集
b = t&s #t和s的交集
c = t-s #t和s的差集
d = t^s #t和s的对称差集(项在t或s中,但不会同时出现在二者之中)
print(a)
print(b)
print(c)
print(d)