一:list的创建及使用
1:list的创建及访问:
#list的创建及访问:
#(1)正/倒序访问
names = ['Bob','Tracy','Eric']
print(names) #输出结果:['Bob', 'Tracy', 'Eric']
print(names[1]) #输出结果:Tracy
print(names[-1]) #输出结果:Eric,即倒数第一个
#(2)多类型
L = ['Bob',100,True] #由于python是动态语言,因此list中可包含多种类型
print(L[1]) #输出结果:100
#(3)空list
EM_L = [] #空list
print(EM_L) #输出结果:[]
2:list添加、删除、替换元素
#list添加、删除、替换元素
#(1)添加
#方法一:从后添加
L = ['Bob','Tracy','Eric']
L.append('Jim') #向list末尾添加元素
print(L) #输出结果:['Bob', 'Tracy', 'Eric', 'Jim']
L = ['a','b','c']
#L.append('d','e') #错误:TypeError: append() takes exactly one argument (2 given)
#print(L) #append只能添加一个参数
L.extend(['d','e']) #extend()的参数是一个list
print(L)
#方法二:插入
L.insert(1,'Tom') #在L[1]前添加元素
print(L) #输出结果:['Bob', 'Tom', 'Tracy', 'Eric', 'Jim']
#(2)删除
#方法一:调用pop()
x = L.pop() #删除list的最后一个,并返回
print(x) #输出结果:Jim
#方法二:使用索引
x = L.pop(2) #删除L[2]
print(x) #输出结果:Tracy
#方法三:remove()
L = ['a','b','c','d','e']
print(L)
L.remove('a') #要求删除的元素在L中存在
print(L)
#方法4:del
del L[1] #删除L[1]
print(L)
del L #直接删除L
#(3)替换
#方法一:先删除再增加(不在解释)
#方法二:通过索引替换
print(L) #输出结果:当前L:['Bob', 'Tom', 'Eric']
L[1] = 'Jerry' #替换L[1]
print(L) #输出结果:['Bob', 'Jerry', 'Eric']
L[-1] = 'Paul' #也可以用-1做索引
print(L) #输出结果:['Bob', 'Jerry', 'Paul']
#(4)比较
list1 = [123]
list2 = [234]
print(list1 > list2) #输出False
list1 = [123,456]
list2 = [456,123]
print(list1 > list2) #输出False,从前向后比较,只要有一个小了,后面就不比较了
#(5)运算符
L = ['a','b','c','d','e',['x','y','z']]
L *= 3
print(L) #输出3次L
print('a' in L) #输出True
print('x' in L) #输出False
print(L[5][1]) #输出y
#(6)其他方法
L = ['a','b','a','c','c','d','e',['x','y','z']]
print(L)
print(L.count('a')) #输出a在L中出现的次数
print(L.index('c')) #输出c在L中第一次出现的位置
print(L.index('c',2,7)) #输出c在L中的位置,但是是从2-7中找
L.reverse() #L反转
print(L)
L = [1,2,5,3,7,6]
L.sort() #默认由小到大排序
print(L)
L.sort(reverse=True) #由大到小排序
print(L)
#(7)list复制
L = ['a','b','a','c','c','d','e']
L0 = L[2:5] #复制L[2]~L[4] :左闭右开
L1 = L[:] #默认从头到尾复制一份L,但是开辟新的空间,当L改变时,L1不在改变
L2 = L #当L改变时,L2也跟着变化,因为内部指针指向同一位置
二:tuple的创建及使用
tuple中文翻译为“元组”,其一旦被创建就不能修改了。创建tuple与list的唯一不同是用( )代替了[ ]。
eg:创建一个tuple t 的方法为: t = ('Jim','Tom','Jerry')
注意:tuple没有append(),insert(),pop().
另一种不常用表示法:(x,y,z) = (1,2,3) 即x=1,y=2,z=3
#tuple的创建及访问
#(1)空元组
t = () #直接用()表示
print(t) #输出结果:()
#(2)单元组:要多加一个","
t = (1)
print(t) #输出结果:1,代表一个整数,不是tuple
t = (1,)
print(t) #输出结果:(1,),表示一个元组
#(3)多元素tuple
t = (1,2,3) #最后一个”,“有没有效果是一样的
print(t) #输出结果:(1, 2, 3)
#(4)插入(没有插入的方法,用拼接)
t = (1,2,3,4,5,6,7,8)
nt = t[:2]+(0,)+t[2:]
print(nt) #通过拼接的方式插入
三:dict的创建及使用
list和tuple用来表示顺序集合,无序集合包括dict和set
1:概念:dict是由key和value值组合的一个无序集合
2:dict定义:使用花括号{ }
#dict的创建及访问
#(1)创建
d={
'Tom':70,
'Lisa':80,
'Bart':90
}
print(d) #运行结果:{'Tom': 70, 'Lisa': 80, 'Bart': 90}
#(2):求长度
L = len(d)
print(L) #运行结果:3
#(3)访问
d={
'123':[4,5,6], #key是str,value是list
123:'abc', #key是int,value是str
('a','b'):True
}
print(d['123']) #运行结果:[4, 5, 6]
print(d[123]) #运行结果:abc
#(4)判断key是否存在
d={
'Tom':70,
'Lisa':80,
'Bart':90,
'Paul':100
}
#A:用in操作符:
if'Paul'in d:
print(d['Paul'])
#(5)更新元素
d['Paul'] = 72 #如果之前已存在则替换
print(d['Paul']) #运行结果:72
#(6)删除元素
del d['Paul']
print(d) #运行结果:{'Tom': 70, 'Lisa': 80, 'Bart': 90}
dict特点:
1:查找速度快,无论10个元素还是10万个元素查找速度都是一样的(代价:占用内存大,浪费很多内容)
2:key不能重复
3:没有顺序,不同机器打印的顺序可能不同
4:元素key必须不可变:基本类型如字符串、整数、浮点数都是不可变的,可作为key,最常用的key还是字符串。但是list可变,就不能作为key。
四:set的创建及使用
1:set:元素不会重复的无序
2:定义形式:调用set()函数,并传入一个list,list元素将作为set的元素
3:set查询速度快
4:元素必须是不可变对象
#set的创建及使用
#(1)创建
s = set(['A','B','C'])
print(s) #输出顺序随机
s = set(['A','B','C','C'])
print(s) #只输出一个C
#(2)添加/删除元素
s = set([1,2,3])
s.add(4)
print(s) #此时set里有1234
s.remove(3)
print(s) #此时去掉了3
s.pop() #随机删除一个元素
print(s)
#(3)其他
s = set([1,2,5,7,9])
l = len(s) #求长度
print(l)
s.clear() #清空
print(s)
#(4)frozenset():不可变集合