Python 语法基础4 列表 元组 字典 集合
文章目录一 列表1插入元素2查询3删除4排序5切片6列表推导式二 元组1元组的特点和作用2查询元素三 字典1定义2查询3修改4添加5删除6长度7获取所有键8获取所有值9获取所有键值对四 集合1添加元素2删除元素3 交集和并集一 列表类似c#数组但是列表元素没有类型限制li[]一个空列表 li[1,2,3,a,4]一个有值的列表列表可以迭代foriinli:print(i)1插入元素append()整体追加li[one,two,three]li.append(four)foriinli:print(i)#one two three fourextend()将另一个迭代器的内容逐项添加如果参数不是一个可迭代对象会报错li[one,two,three]li.extend(four)foriinli:print(i)#one two three f o u rinsert()在指定位置处添加li[one,two,three]li.insert(1,four,)foriinli:print(i)#one four two three2查询**in和 not in ** 元素是否存在/不存在返回Bool 注意这两个不是方法li[one,two,three]print(oneinli)#输出Trueindex()如果元素存在返回索引如果不存在报错列表没有find方法参数2 3可以指定查找范围li[one,two,three]print(li.index(one))count()元素在列表中出现的次数只能从整个列表中查找li[one,two,three]print(li.count(one))len()获取列表的长度li[1,2,3]print(len(li))#输出33删除del删除整个表或某个元素注意这不是方法li[one,two,three]del li[0]#删除第0个元素 del li #删除整个表pop()删除最后一个元素或指定元素有返回值返回被删除的元素这是一个方法li[one,two,three]deli.pop()没有参数默认删除最后一个print(de)#输出threeprint(li)#输出[one,two]remove()根据元素的值删除只删除第一个匹配值没有匹配值会报错li[one,one,two,three]li.remove(one)print(li)#[one,two,three]4排序sort()从小到大排序字母按字母顺序排序li[one,one,two,three]li.sort()print(li)#[one,one,three,two]reverse()翻转列表元素5切片li[1,2,3,4]print(li[1:3])#输出[2,3]索引包前不包后 前后都可以省略分别是从头切和切到尾6列表推导式格式1[表达式 for 元素in 迭代器] 中括号是必须的li[][li.append(i)foriinrange(1,6)]print(li)#输出[1,2,3,4,5]格式2[表达式 for 元素in 迭代器 if条件] 中括号是必须的li[][li.append(i)foriinrange(1,11)ifi%21]print(li)#输出[[1,3,5,7,9]]二 元组类似c#数组但是元组元素没有类型限制tua(1,2)注意如果只有一个元素后边要加逗号否则会被解释器理解为一个变量tua(1)print(type(tua))#输出classinttua被理解为一个int变量 tua(1,)print(type(tua))#classtuple加上逗号正确识别为一个元组 tua()print(type(tua))#classtuple定义空元组可以只写()1元组的特点和作用不允许修改内容只能查占位符输出时使用的是元组namewuziage20print(我的名字是%s我的年龄是%d%(name,age))tua(wuzi,20)print(我的名字是%s我的年龄是%d%tua)#两者等价2查询元素in notin count() index() length 同列表三 字典1定义经典的键值对键要有唯一性键和值的类型没有限制如果有两个dic{1:wuzi,age:18}print(dic)#输出结果{1:wuzi,age:18}键名重复不会报错但是会覆盖前边的值dic{1:wuzi,age:18,age:19}print(dic)#输出{1:wuzi,age:19}2查询两种方式dic{name:wuzi,age:19}print(dic[age])#输出19键不存在会报错print(dic.get(age))#输出19键不存在返回Noneprint(dic.get(height,键不存在))#输出 键不存在 可以指定一个键不存在时的提示3修改dic{name:wuzi,age:19}dic[age]20dic[hegiht]180print(dic)#输出{name:wuzi,age:20,hegiht:180}如果键不存在将会自动新增4添加dic[hegiht]180#如果键不存在会自动新加5删除del删除整个对象 或 键值对 del不是方法是python的内置语句#删除对象dic{name:wuzi,age:19}deldicprint(dic)#输出报错因为字典的对象已经被删除#删除键值对 键不存在会报错dic{name:wuzi,age:19}del dic[age]print(dic)#输出{name:wuzi}clear()清空字典dic{name:wuzi,age:19}dic.clear()print(dic)#输出{}pop()移除一个元素并返回被移除的值和del不同,pop是dic自带的内置方法dic{name:wuzi,age:19}ddic.pop(age)print(d)#输出19被移除的值print(dic)popitem()3.7之前是随机删除一个键值对3.7之后是删除最后一个键值对dic{name:wuzi,age:19}ddic.popitem()print(dic)#{name:wuzi}6长度len()这不是dic的方法而是Python的全局方法dic自带的是 dic.len()len()内部会调用这个方法dic{name:wuzi,age:19}print(len(dic))#27获取所有键keys()dic{name:wuzi,age:19}print(dic.keys())#输出dict_keys([name,age])#keys()返回的类型为dict_keys这是一个迭代器foriindic.keys():print(i)#循环打印键名 此外如果直接foriindic也将打印键名8获取所有值values()dic{name:wuzi,age:19}print(dic.values())#输出dict_values([wuzi,19])foriindic.values():print(i)#循环打印值9获取所有键值对items()dic{name:wuzi,age:19}print(dic.items())#输出dict_items([(name,wuzi),(age,19)])foriindic.items():print(i)#循环打印值四 集合集合set不能有重复值 不能修改 可以自动去重集合是无序的取出的顺序和放入的顺序无关每次运行都会不一样(只有数字的顺序和放入顺序固定一致)s1{1,2,3}s2set{}#使用这种方式定义一个空集合如果直接s2{}会被识别为一个字典#自动去重s3{1,2,3,4,4,4}print(s3)#输出{1,2,3,4}1添加元素add()整体添加一次只能添加一个s3{1,2,3,4}s3.add(5)print(s3)#输出{1,2,3,4,5}update()添加一个迭代对象里的元素s3{1,2,3,4}s3.update((5,6,7))#括号里需要是一个可迭代对象 这里是一个元组print(s3)#输出{1,2,3,4,5,6,7}2删除元素remove()删除指定的元素 参数是元素不是索引如果元素不存在会报错s3{1,2,3,4}s3.remove(1)print(s3)#输出{2,3,4}pop()删除无序排列后的第一元素剩下的元素不会重新排序s3{1,2,3,4}s3.pop()print(s3)#输出{3,1,4}s3.pop()print(s3)#输出{1,4}discard()删除指定的元素元素不存在不会报错s3{1,2,3,4}s3.discard(2)print(s3)#输出{3,4,1}3 交集和并集交集取共有的部分用符号如果没没有交集会返回 set() 这是一个空集合s3{1,2,3,4}s4{1,5}print(s3s4)#输出{1}s3{1,2,3,4}s4{5}print(s3s4)#输出set()空集合并集用|符号s3{1,2,3,4}s4{1,5}print(s3|s4)#输出{5,1,3,4,2}