在 Python 中,列表是由一系元素按特定顺序构成的数据序列,这就意味着如果我们定义一个列表类型的变量,可以用它来保存多个数据。在 Python 中,可以使用[]字面量语法来定义列表,列表中的多个元素用逗号进行分隔,代码如下所示。items1 = [35, 12, 99, 68, 55, 35, 87]items2 = ['Python', 'Java', 'Go', 'Kotlin']items3 = [100, 12.3, 'Python', True]print(items1) # [35, 12, 99, 68, 55, 35, 87]print(items2) # ['Python', 'Java', 'Go', 'Kotlin']print(items3) # [100, 12.3, 'Python', True]
一、列表
特点:有序、可变、元素可重复。
1、访问列表中的值
访问列表中的元素非常简单,通过索引(index)即可,就像是给货架上的每个位置编了号。记住,Python 的索引是从 0 开始的哦!
list = ['red', 'green', 'blue', 'yellow', 'white', 'black']print( list[0] ) # 'red' print( list[1] )print( list[2] )print( list[-1] ) #blackprint( list[-2] ) #whiteprint( list[-3] ) #yellow
nums = [10, 20, 30, 40, 50, 60, 70, 80, 90]# 取出从索引0到索引4(不包含)的元素print(nums[0:4]) # 输出: [10, 20, 30, 40]# 从第二个元素开始,取到最后print(nums[1:]) # 输出: [20, 30, 40, 50, 60, 70, 80, 90]
list = ['Google', 'Runoob', "Zhihu", "Taobao", "Wiki"]# 读取第二位print ("list[1]: ", list[1])# 从第二位开始(包含)截取到倒数第二位(不包含)print ("list[1:-2]: ", list[1:-2])print(list[1:]) #输出从第二个元素开始后的所有元素print(list[:-2]) #输出倒数第二个前的所有print(list(:3))
2、更新列表
list = ['Google', 'Runoob', 1997, 2000]print ("第三个元素为 : ", list[2])list[2] = 2001print ("更新后的第三个元素为 : ", list[2]) # 输出: 2001list1 = ['Google', 'Runoob', 'Taobao']list1.append('Baidu')print ("更新后的列表 : ", list1)# 输出: ['Google', 'Runoob', 2001, 2000, 'Baidu']
3、删除列表元素
list = ['Google', 'Runoob', 1997, 2000]print ("原始列表 : ", list)del list[2]print ("删除第三个元素 : ", list) # 输出: ['Google', 'Runoob', 2000, 'Baidu']
4、列表操作符
nums=[2,2,3,4,5,3,6,77,4433,33]print(len(nums))print(nums+[2,3,4,5])print(["hi"]*4)print(2 in nums)for i in nums: print(i)
5、嵌套列表
a = ['a', 'b', 'c']n = [1, 2, 3]x = [a, n]print(x) #[['a', 'b', 'c'], [1, 2, 3]]print(x[0]) #['a', 'b', 'c']print(x[0][1]) #'b'
6、常用方法
nums=[2,33,24,57,6,33,7,55,98,68,45]print(len(nums))print(max(nums))print(min(nums))aTuple = (123, 'Google', 'Runoob', 'Taobao')print(list(aTuple)) #元组转列表print(nums.count(2)) #2出现的次数print(nums.index(33)) #33第一次匹配的索引位置i=nums.pop() #移除列表中的一个元素(默认是-1),并且返回该元素的值j=nums.pop(1) #删除索引为1的nums.remove(33) #移除列表中某个值的第一个匹配项nums.reverse() #列表反向nums.sort() #排序,默认False升序,设置True降序nums.clear() #清空列表nums2=nums.copy() #复制
列表还有很多强大的内置方法,比如排序、反转、计数等等,让你的操作更加便捷。
nums = [2, 33, 24, 57, 6, 33]# 计算元素个数print(len(nums)) # 输出: 6# 统计某个元素出现的次数print(nums.count(33)) # 输出: 2# 对列表进行排序nums.sort()print(nums) # 输出: [2, 6, 24, 33, 33, 57]# 反转列表nums.reverse()print(nums) # 输出: [57, 33, 33, 24, 6, 2]
二、元组
接下来是元组(Tuple)。它和列表非常像,唯一的关键区别是:元组一旦创建,就不能被修改。这让它在需要保护数据不被意外更改的场景下非常有用,就像一个锁上的安全箱。
特点:有序、不可变、元素可重复。
1、元组访问
Python 的元组与列表类似,不同之处在于元组的元素不能修改、不能删除。元组的创建和访问方式和列表几乎一样,只是把方括号 [] 换成了圆括号 ()。tup1 = ('Google', 'Runoob', 1997, 2000)tup2 = (1, 2, 3, 4, 5 )tup3 = "a", "b", "c", "d" # 不需要括号也可以print(type(tup3)) #<class 'tuple'>
tup1 = (50)print(type(tup1)) # 不加逗号,类型为整型 <class 'int'>tup1 = (50,)print(type(tup1)) # 加上逗号,类型为元组 <class 'tuple'>
tup1 = ('Google', 'Runoob', 1997, 2000)tup2 = (1, 2, 3, 4, 5, 6, 7 )print ("tup1[0]: ", tup1[0])print ("tup2[1:5]: ", tup2[1:5])
2、操作符
3、方法
tuple1 = ('Google', 'Runoob', 'Taobao')len(tuple1)tuple2 = ('5', '4', '8')max(tuple2)min(tuple2)list1= ['Google', 'Taobao', 'Runoob', 'Baidu']tuple1=tuple(list1) #将可迭代系列转换为元组
三、字典
1、创建字典
字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:d = {key1 : value1, key2 : value2, key3 : value3 }
# 使用大括号 {} 来创建空字典emptyDict = {}# 打印字典print(emptyDict) #{}# 查看字典的数量print("Length:", len(emptyDict)) #Length: 0# 查看类型print(type(emptyDict)) #<class 'dict'>
emptyDict = dict()# 打印字典print(emptyDict)# 查看字典的数量print("Length:",len(emptyDict))# 查看类型print(type(emptyDict))
2、访问字典的值
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}print ("tinydict['Name']: ", tinydict['Name'])print ("tinydict['Age']: ", tinydict['Age'])
3、修改字典
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}tinydict['Age'] = 8 # 更新 Agetinydict['School'] = "橙软" # 添加信息print ("tinydict['Age']: ", tinydict['Age'])print ("tinydict['School']: ", tinydict['School'])
4、删除字典
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}del tinydict['Name'] # 删除键 'Name'tinydict.clear() # 清空字典del tinydict # 删除字典print ("tinydict['Age']: ", tinydict['Age'])print ("tinydict['School']: ", tinydict['School'])
5、字典特性
不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住tinydict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鸟'}print ("tinydict['Name']: ", tinydict['Name'])
键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行6、方法
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}print(len(tinydict)) #计算字典元素个数,即键的总数print(str(tinydict)) # "{'Name': 'Runoob', 'Age': 7, 'Class': 'First'}"print(type(tinydict)) #<class 'dict'>tinydict.clear() #删除字典内所有元素dict2=tinydict.copy() #返回一个字典的浅复制seq = ('name', 'age', 'sex')tinydict = dict.fromkeys(seq)print("新的字典为 : %s" % str(tinydict)) #新的字典为 : {'age': None, 'name': None, 'sex': None}tinydict = dict.fromkeys(seq, 10)print("新的字典为 : %s" % str(tinydict)) #新的字典为 : {'age': 10, 'name': 10, 'sex': 10}tinydict = {'Name': 'Runoob', 'Age': 27}print ("Age : ", tinydict.get('Age'))# 没有设置 Sex,也没有设置默认的值,输出 Noneprint ("Sex : ", tinydict.get('Sex'))# 没有设置 Salary,输出默认的值 0.0print ('Salary: ', tinydict.get('Salary', 0.0)) #如果指定键的值不存在时,返回该默认值0.0# get(key) 方法在 key(键)不在字典中时,可以返回默认值 None 或者设置的默认值。# dict[key] 在 key(键)不在字典中时,会触发 KeyError 异常。if name in tinydict: print("aa")d = {'Name': 'Runoob', 'Age': 7}for i,j in d.items(): print(i, ":\t", j)print(tinydict.keys())print(tinydict.values())tinydict = {'Name': 'Runoob', 'Age': 7}tinydict2 = {'Sex': 'female'}tinydict.update(tinydict2)print("更新字典 tinydict : ", tinydict)site= {'name': '橙软', 'alexa': 10000, 'url': 'www.csoftedu.net'}element = site.pop('name') #删除字典给定键 key 所对应的值,返回值为被删除的值print('删除的元素为:', element)print('字典为:', site)
四、集合
1、创建集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,...}或者set(value)
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}print(basket)# {'orange', 'banana', 'pear', 'apple'}a = set('abracadabra')print(a) #{'a', 'r', 'b', 'c', 'd'}
2、添加元素
thisset = set(("Google", "Runoob", "Taobao"))thisset.add("Facebook")print(thisset) #{'Taobao', 'Facebook', 'Google', 'Runoob'}
thisset = set(("Google", "Runoob", "Taobao"))thisset.update({1,3}) #参数可以是列表,元组,字典等print(thisset)#{1, 3, 'Google', 'Taobao', 'Runoob'}thisset.update([1,4],[5,6]) print(thisset) #{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
3、移除元素
thisset = set(("Google", "Runoob", "Taobao"))thisset.remove("Taobao") #如果元素不存在,则会发生错误print(thisset)#{'Google', 'Runoob'}
thisset = set(("Google", "Runoob", "Taobao"))thisset.discard("Facebook") # 移除不存在的元素时不会发生错误,remove会发生错误print(thisset)#{'Taobao', 'Google', 'Runoob'}
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))x = thisset.pop() #set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除print(x)
4、计算集合元素个数
thisset = set(("Google", "Runoob", "Taobao"))len(thisset)
5、清空集合
thisset = set(("Google", "Runoob", "Taobao"))thisset.clear()print(thisset)
6、判断元素是否在集合中存在
thisset = set(("Google", "Runoob", "Taobao"))"Runoob" in thisset
列表 (List): 灵活的多面手,有序可变,日常使用频率最高。
元组 (Tuple): 不可变的安全箱,用于保护数据不被修改。
字典 (Dictionary): 聪明的键值对管家,通过键快速查找,非常高效。
集合 (Set): 高效的去重专家,处理唯一元素和集合运算的首选。