二.列表、元组和字典

1.序列

元组和列表的区别:元组不可改变(final),列表可以改变


#创建列表,用[]
list = ['c1',20,'c2']

#创建元组,用()
tuple = ('t2','t1',2)
#有的时候为了消除元组的歧义,当其只有一个元素的时候:oneElement = (1,)而不能写成(1),


#元组合列表的通用方法
#1.使用索引来访问元素(索引从右往左依次增大,从0开始;从右往左一次减少,从-1开始),也就是每一个元素都有两个索引值
print(list[0])

#2.获取列表或者元组中的一段:[start:end:step]
print(list[0:-1:2])

#3.加法运算,其和就是两个列表或者两个元组所包含元素的总和
#但是元组只能和元组相加,列表只能和列表相加
list1 = [1,2,3]
list2 = [2,3,4]
print(list1+list2)#输出:[1,2,3,2,3,4]

#4.乘法运算:就是把列表或者元组包含的元素重复N遍
list1 = [1,2]
print(list1 * 3) #输出:[1,2,1,2,1,2]把1和重复了3遍

#5.in运算符:
list1 = [1,2,3]
print(1 in list1)#输出:True

#6.长度、最大值和最小值
print(max(list1)) # 获取list1列表的长度
print(min(list1)) #获取list1中的最小值,如果要使用此类比较大小的函数,需要元组或者列表的元素类型是相同的并且可以比较大小


#7.序列解包和序列封包
'''
解包:程序语序序列直接赋值给多个变量。此时序列的各元素会被依次赋值给每个变量(但是要求变量的个数与序列的长度相同

封包:程序把多个值赋给一个变量的时候,python会自动将多个值封装成元组(注意是元组不是列表)
'''

vals_list = 10,20,30 #封装成(10,20,30)的元组
list2 = [2,3,4,5]
a,b,c,d = list2

使用列表

#1.创建列表:list()方法---->元组的对应方法:tuple()
#将元组转换成为列表
myTuple = (1,2,3,4,5)
myList1 = list(myTuple)
#将区间对象转换成列表
myRange = range(1,5)#默认步长为1
myList2 = list(myRange)


#2.增加列表元素:append()方法
myList1.append('123')
#同时也可以增加一个列表或者元组,但是用append方法会将整个元组或列表当成一个元素追加到myList中(range对象类似)
myList1.append([1,2,3])
#追加列表中的元素,extend方法会将列表中的元素添加到myList中
myList1.extend([1,2,3,4])
#在列表中间某个位置添加元素:insert()方法
myList1.insert(3,crazy)



#3.删除元素:del语句(还可以用于删除其他东西)
del myList1[2]
#删除变量,将整个列表删除
del myList1
#删除特定的元素:remove()方法
myList1.remove("30")#删除在myList1中第一次找到的字符串30这个元素

#slice语法:可以对列表进行增删改查
list[1:3] = 'abcdefg'#会将字符串

2.字典入门

字典的key必须是不可变类型(数字、元组合字符串)

创建字典

dict1 = {'1':12,'2':23}
#使用元组作为字典的key
dict2 = {(1,2,3):1,(2,3):4}
#使用元组作为key-value,相当于java中的entry
dict3 = {(1,2),(3,4)}
#创建空的字典
dict4 = dict()
#将列表转换成字典
list = [[1,2],[3,4],[5,6]]
dict5 = dict(list)
#使用key=value形式
dict6 = dict(1 = 2,2 = 3)#{1:2,2:3}

访问字典

sources = {1:2,2:3.'4':5}
print(sources['4'])

#添加key-value
#如果'5'这个key存在,就是修改k-v,如果不存在,就是添加k-v
source['5'] = 6

#删除key-value
del source['4'] 

字典中的方法

dict = {1:2,2:3,3:4,4:5}
#清空字典
dict.clear()

#获取value
value = dict.get(key)#如果使用方括号但是key不存在时会引发错误,get方法如果key不存在返回None,不会引发错误

#更新字典,使用另一个字典对原字典进行更新
#对于在dict中每一个k-v,如果source中含有这个key,则会更新value,如果不存在key,则会将此k-v添加到source中
source.update(dict);

#items(),keys()和values()分别获得字典中的所有k-v对、所有的key和所有的value
is = source.items()
ks = source.keys()
vs = source.values()



;