tuple 元组
1 # 定义 2 temp = (2, ) # 规范定义,单个元素的元组 3 tem = 2, # 可行,但不规范定义 4 tep = () # 空元组 5 6 tp = (1, 'ss', 3.5, [6, 'dd']) # 元组中 可存放任何的 数据类型 int、float、str、bool、字符串、字典、列表等 7 # 通过索引获取元组中的元素 8 print(tp[3]) # 输出:[6, 'dd'] 9 print(tp[3][1]) # 输出:'dd' 10 print(tp[::-1]) # 输出:([6, 'dd'], 3.5, 'ss', 1)
元组解包
1 # 元组解包 2 c1, c2, c3, c4 = (3, 'd', 5.6), 7.8, 'ee', 4 < 5 3 print(''' 4 c1类型:{},c1 = {} 5 c2类型:{},c2 = {} 6 c3类型:{},c3 = {} 7 c4类型:{},c4 = {} 8 '''.format(type(c1), c1, type(c2), c2, type(c3), c3, type(c4), c4)) 9 10 # 输出: 11 c1类型:<class 'tuple'>,c1 = (3, 'd', 5.6) 12 c2类型:<class 'float'>,c2 = 7.8 13 c3类型:<class 'str'>,c3 = ee 14 c4类型:<class 'bool'>,c4 = True
list 列表
1 # 定义 2 li = [1] # 单个元素的列表 3 ls = [1, 'ss', 3.5, [6, 'dd'], 4 < 5] # 字典也可存放任何的数据类型 4 5 #通过索引获取列表中的元素 6 print(ls[3]) # 输出:[6, 'dd'] 7 print(ls[3][1]) # 输出:'dd' 8 print(ls[::-2]) # 输出:[True, 3.5, 1]
列表操作
1 name = ['妲己', '安琪拉', '嫦娥', '小乔', '周瑜'] 2 3 # append() 列表最后新增1个元素,仅1个参数 4 name.append('高渐离') 5 print(name) #输出:['妲己', '安琪拉', '嫦娥', '小乔', '周瑜', '高渐离'] 6 7 # extend() 以元组、列表的形式,可添加多个元素 8 name.extend(['甄姬', '嬴政', '武则天']) # name=['妲己', '安琪拉', '嫦娥', '小乔', '周瑜', '甄姬', '嬴政', '武则天'] 9 10 # insert(index, arg) 在列表中指定位置,插入元素 11 name.insert(3, '王昭君') # name=['妲己', '安琪拉', '嫦娥', '王昭君', '小乔', '周瑜'] 12 13 # reverse() 列表 倒序,无参数 14 name.reverse() 15 print(name) # 输出:['周瑜', '小乔', '嫦娥', '安琪拉', '妲己'] 16 17 # index() 查找指定字符串并返回索引,若字符串不存在,将报错 18 print(name.index('小乔')) # 输出:3 19 20 # pop(-2) 删除指定索引的元素,无参数时,默认删除列表最后一个 21 name.pop(-2) # name=['妲己', '安琪拉', '嫦娥', '周瑜'] 22 23 # remove() 删除找到的第一个指定元素,没有找到要删除的元素,报错 24 name.remove('安琪拉') # 输出:['妲己', '嫦娥', '小乔', '周瑜'] 25 26 # count() 返回指定元素 在列表中存在的次数 27 name.count('小乔') # 输出:1 28 29 # clear() 清空列表,无参数 30 name.clear() # 输出:[] 31 32 # del 33 del name[1:4:2] # 删除元素,可通过元素索引、切片 34 print(name) # 输出:['妲己', '嫦娥', '周瑜'] 35 36 del name # 删除列表
列表中的切片操作
1 # 索引1-3的元素,被指定字符替换 2 shooter = ['鲁班', '后羿', '孙尚香', '黄忠', '伽罗', '虞姬'] 3 shooter[1:4] = ['马可波罗', '狄仁杰', '李元芳', '百里守约', '成吉思汗'] # 可以用元组、列表 赋值 4 print(shooter) # 输出:['鲁班', '马可波罗', '狄仁杰', '李元芳', '百里守约', '成吉思汗', '伽罗', '虞姬'] 5 6 shooter[1:4] = '百里守约' # 用字符串 赋值 7 print(shooter) # 输出:['鲁班', '百', '里', '守', '约', '伽罗', '虞姬']
copy() 复制
1 # copy() 复制列表,无参数 2 name = ['妲己', '安琪拉', '嫦娥', '小乔', '周瑜'] 3 name1 = name # name1 和 name 是同一个列表,id相同 4 name_copy = name.copy() # 创建一个新列表name_copy,值同name, id 不同 5 print(id(name)) # 输出:2034224161416 6 print(id(name1)) # 输出:2034224161416 7 print(id(name_copy)) # 输出:2034224161480 8 9 name[2] = '诸葛亮' # 改变原列表name的值 10 print(""" 11 name = {} 12 name1 = {} 13 name_copy = {} 14 """.format(name, name1, name_copy)) 15 16 """ 17 name 和 name1 的值,均为:['妲己', '安琪拉', '诸葛亮', '小乔', '周瑜'] 18 name_copy 值为:['妲己', '安琪拉', '嫦娥', '小乔', '周瑜'] 19 """
sort()
1 # sort() 对列表中元素(相同类型:字符串、数字),进行升序排序(ASCII) 2 num = [2, 5, 1, 7, 5.5] 3 num.sort() 4 print(num) # 输出:[1, 2, 5, 5.5, 7] 5 6 str1 = ['d', 'D', 'a', 'F', 'G', 'f'] 7 str1.sort() 8 print(str1) # 输出:['D', 'F', 'G', 'a', 'd', 'f'] 9 10 # 对列表中元素类型为 元组/列表的,元组/列表中,第一个元素的类型需相同 11 club = [(7, 'a', 2, 'ss'), (6, 'x'), (0, 1, 'z')] 12 club.sort() 13 print(club) # 输出:[(0, 1, 'z'), (6, 'x'), (7, 'a', 2, 'ss')] 14 15 # 列表中的元素需为同一种类型,才能用sort()排序,否则 报错
列表中的元组,元组中的列表
1 # 列表中,含有元组 2 list_tuple = ['诸葛亮', '张良', '王昭君', ('安琪拉', '妲己')] 3 list_tuple[-1][0] = '甄姬' # 试图 将元组元素'安琪拉',修改为‘甄姬’,程序报错 4 list_tuple[-1] = '貂蝉' # 列表中的元组 只能作为一个整体被替换 5 6 # 元组中的列表 7 tuple_list = ('张良', '王昭君', ['安琪拉', '妲己']) 8 tuple_list[-1][0] = '高渐离' # 元组中的列表,列表中的元素可被修改 ,但列表不可作为一个整体 被 替换 9 tuple_list[-1] = '周瑜' # 错误操作
dict 字典
1 # 定义 2 dic = {'key1':'value1', 'key2':'value2',……} # key 必须是唯一的 3 4 # tuple类型数据,可作为key 5 # list 和 dict 不能作为key 6 7 dic_name = {1: '庄周', 'key': 6, ('list', 'tuple'): ([1, 2, 'ss'], (5, 6, 'ee'))} 8 print(dic_name[('list', 'tuple')]) # 输出:([1, 2, 'ss'], (5, 6, 'ee')) 9 10 # hero1 = {['name', 'age']: 'ss'} # 运行会报错
1 # 通过 key 获取/修改 对应的value值 2 hero = {'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'} 3 4 # 获取值 5 print(hero['na1']) # 输出:庄周 6 print(hero.get('na3')) # 输出:孙膑 7 8 # 修改值 9 hero['na2'] = '东皇太一' 10 print(hero) # 输出:{'na1': '庄周', 'na2': '东皇太一', 'na3': '孙膑', 'na4': '鬼谷子'}
1 # 获取字典中所有的键值对 2 print(hero.items()) # 输出:dict_items([('na1', '庄周'), ('na2', '明世隐'), ('na3', '孙膑'), ('na4', '鬼谷子')]) 3 4 #将获取的键值对 转化为 list 5 dict_items = list(hero.items()) 6 7 # 通过索引获取 8 print(dict_items[1, 1]) # 输出: 明世隐
1 # 获取字典中所有的key 2 print(hero.keys()) # 输出:dict_keys(['na1', 'na2', 'na3', 'na4']) 3 4 # 获取字典中所有的value 5 print(hero.values()) # 输出:dict_values(['庄周', '明世隐', '孙膑', '鬼谷子']) 6 7 # 清空字典 8 hero.clear() 9 print(hero) # 输出:{} 10 11 # 通过key 删除字典中的 key-value 值对 12 hero.pop('na1') # 必须传一个参数key 13 print(hero) # 输出: {'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'} 14 15 # 删除字典最后一个键值对,并返回这个键值对,无需传参 16 print(hero.popitem()) # 输出:('na4': '鬼谷子') 17 print(hero) # 输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑'} 18 19 # 复制字典 20 hero_copy = hero.copy()
fromkeys([key, ……], '默认值') 字典重定义
1 # 重定义的单个/多个key, 都是相同的默认值 2 hero_redefined = hero.fromkeys(['key1', 'key2', 'key3'], 'default_value') 3 print(hero_redefined) # 输出:{'key1': 'default_value', 'key2': 'default_value', 'key3': 'default_value'} 4 print(hero) # 输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'}
setdefault("key", "default_value") 为字典中单个key 赋默认值, 参数为 单个键值对,default_value 值可省略
1 # 若 key 在字典中存在,则不覆盖默认值;若key在字典中不存在,则创建key,并赋初始值 2 hero.setdefault('na1', '鲁班大师') 3 hero.setdefault('new_key', '蔡文姬') 4 print(hero) # 输出: {'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', 'new_key': '蔡文姬'}
update(dict) 将字典参数更新到目标字典中
1 # update(dict) 参数:字典,将hero_temp字典 更新到 hero字典 2 hero_temp = {'na1': '妲己', 'na_new': '安琪拉'} 3 hero.update(hero_temp) 4 print(hero) # 输出:{'na1': '妲己', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', 'ne': '安琪拉'}
字典中新增键值对
1 hero['诗人'] = '李白' # 新增键值对 2 print(hero) # 输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', '诗人': '李白'}
Python中 可变类型 与 不可变类型
1 # 元组 字符串 是不可变类型 2 tup = ('s1', 's2') 3 tup = tup.__add__(('s3', 's4')) # tup 元组 新增 元素,类似于 两个字符串拼接,赋值于另一个变量,元组的地址被改变 4 print(tup) # 输出:('s1', 's2', 's3', 's4') 5 6 tup[0] = 's0' # 运行报错,因为:元组不可被改变,通过索引 修改 元组元素的值,是不可以的 7 8 str1 = 's3 sunday' 9 print(id(str1)) # 输出:2444818405680 10 str1 = 'ss' # 修改字符串str1标签的指向地址 11 print(id(str1)) # a 指向的地址改变了, 输出:2444818412744
1 # 列表 字典 是可变类型,可修改列表、字典的元素,地址id不会变 2 ls = [1, 'ss', 3.5, [6, 'dd'], 4 < 5] 3 print(id(ls)) # 输出:2674034238152 4 ls[1] = 5 # 修改列表元素 5 print(id(ls)) # 输出:2674034238152 6 print(ls) # 输出:[1, 5, 3.5, [6, 'dd'], True]
字符串 和 列表的区别
1 name = 'Lucy' 2 name.replace('u', 'an') 3 print(name) # 输出:Lucy 4 re_name = name.replace('u', 'an') 5 print(re_name) # 输出:Lancy
1 str1 = "lucy" 2 str1[1:3] = 'a' # 报错 TypeError: 'str' object does not support item assignment
类型判断 isinstance()
1 # isinstance(object, type) 类型判断,输出结果:True, False 2 int_num = 8 3 print(isinstance(int_num, int)) # 判断int_num 类型是否为 int类型,输出:True 4 print(isinstance(int_num, float)) # 输出:False
all() 判断元组、列表、集合中,是否存在元素的值为假(即:'', None, 0),是则返回False,否则返回True
1 # all(object) 2 tuple_a = (1, 2, 'we', 'are') 3 tuple_b = () 4 5 list_a = [1, 2, '', 'are'] # list_a = [1, 2, None, 'are'] 6 list_b = [] 7 8 set_a = {1, 0, 'we', 'are'} 9 set_b = {} 10 11 print(""" 12 tuple_a:{} 13 list_a:{} 14 set_a:{} 15 """.format(all(tuple_a), all(list_a), all(set_a))) 16 17 print("*"*10, """空元组、空列表、空集合,返回Ture 18 tuple_b:{} 19 list_b:{} 20 set_b:{} 21 """.format(all(tuple_b), all(list_b), all(set_b))) 22 23 # 输出: 24 tuple_a:True 25 list_a:False 26 set_a:False 27 28 ********** 空元组、空列表、空集合,返回Ture 29 tuple_b:True 30 list_b:True 31 set_b:True 32
any() 判断元组、列表、集合中,是否所有的元素值都为假(即:'', None, 0),是则返回False, 否则返回True
1 # any(object) 2 tuple_a = (4, None, 'ss', 0, '') 3 tuple_b = () 4 5 list_a = ['', 0, None] 6 list_b = [] 7 8 set_a = {4, 'ss', None} 9 set_b = {} 10 print(''' 11 tuple_a : {} 12 list_a : {} 13 set_a : {} 14 '''.format(any(tuple_a), any(list_a), any(set_a))) 15 16 print('*'*10, '''空元组、空列表、空集合,返回False 17 tuple_b : {} 18 list_b : {} 19 set_b : {} 20 '''.format(any(tuple_b), any(list_b), any(set_b))) 21 22 # 输出: 23 tuple_a : True 24 list_a : False 25 set_a : True 26 27 ********** 空元组、空列表、空集合,返回False 28 tuple_b : False 29 list_b : False 30 set_b : False 31