- 列表和元组的主要区别在于列表可以修改而元组不可以
- 常规操作包括索引、切片、插入、删减等。
列表新建
- 新建一个列表
- 列表由中括号为容器每个元素之间用逗号间隔。
python#新建一个列表alist [1,"nihao","hello","你好"]print(alist)
索引
- 列表中所有元素都有编号—从0开始递增;
- 列表中第一个元素编号为0最后一个元素编号为-1。
pythonalist [1,"nihao","hello","你好"]alist[0] #取出alist中的第一个元素1alist[-1] #取出alist中的最后一个元素"你好"alist[2] #取出alist中的第三个元素"hello"
切片
- 用索引我们可以访问单个元素,而切片可以让我们访问多个元素
- 使用两个索引值,并用冒号分隔
pythonblist [1,2,3,4,5,6,7,8,9,10] #新建一个列表blistblist[0:3] #取出blist中前3个元素[1,2,3]blist[7:10] #取出blist中后3个元素[8,9,10]#添加步长参数blist[0:4:2] #按步长为2,取出blist中前4个元素.[1,3]python#小应用:提取域名wangzhi input("请输入网址") #输入http://www.xiaokeai.comyuming wangzhi[11:-4] #截取域名print(yuming) #返回 xiaokeai
序列的加法和乘法
python[1,3,4][4,6,7] #运行结果为[1, 3, 4, 4, 6, 7][1,3,4]*4 #运行结果为[1, 3, 4, 1, 3, 4, 1, 3, 4, 1, 3, 4]
成员资格
- 用in判断元素是否在列表中,存在返回True,不存在返回False
python#判断输入的内容是否存在users ["王二麻子","李大嘴","赵四","大墩子"] #简历列表usersuser_name input("请输入你的名字:") #输入user_name in users
列表方法
- append 将一个对象附加到列表结尾
- insert 将一个对象插入到列表中的指定位置
- extend 将多个值添加进列表末尾
pythonlst [3,7,32,8,13,34] #创建新列表lstlst.append(3) #添加新元素3print(lst) #打印结果[3, 7, 32, 8, 13, 34, 3]tst [3,7,32,8,13,34] #创建新列表tsttst.insert(3,"hello") #插入新元素,使得新元素的索引为3print(tst) #打印结果[3, 7, 32, hello, 8, 13, 34]ist [3,7,32,8,13,34] #创建新列表ista [1,3,4] #创建新列表aist.extend(a)print(ist) #打印结果[3, 7, 32, 8, 13, 34, 1, 3, 4]#extend添加与加法(ista)的主要区别是,extend改变了ist的内容,而加法没有改变ist
- copy 复制列表
- count 计算出指定的元素在列表中出现了多少次
- index 查找指定值第一次出现的索引
pythona [1,2,3] #创建新列表ab a.copy() #将a复制给bprint(b) #输出结果[1,2,3]b[1] 4 #改变b中的元素print(a,b) #a不会被改变,输出[1, 2, 3] [1, 4, 3]k ["two","to","san","two",["two","two"]] #新建列表kk.count("two") #统计k中"two"的个数,返回结果2k.index("to") #返回to第一次出现的索引值,结果为1
- pop 从列表中删除末尾元素,并返回这一元素
- remove 用于删除第一个为指定值的元素
- clear 清空列表内容
- del 删除列表中元素(del语句不属于方法)
pythonx [1,2,3] #创建新列表xx.pop() #删除了最后一个元素,并返回3print(x) #输出结果[1,2]y [4,65,86,4,56,5] #创建新列表yy.remove(4) #删除列表中第一个4print(y) #输出结果[65, 86, 4, 56, 5]j [5,432,5425.6,51] #创建新列表jj.clear() #清除列表print(j) #打印结果[]l ["to","be","am","is","are"] #创建新列表ldel l[2] #删除l中索引为2的元素print(l) #输出结果[to, be, is, are]
- sort 对列表进行排序,默认为从小到大排序,或者按字母顺序排序。调整参数可以调整排序方式。
pythonh [32,54,6,8,2,543,6576,243]h.sort() print(h) #输出结果[2, 6, 8, 32, 54, 243, 543, 6576],按数字大小h.sort(reverseTrue)h.reverse()print(h) #调整sort中reverse参数或者直接使用reverse方法可以倒序排序,输出结果为[6576, 543, 243, 54, 32, 8, 6, 2]y ["p","y","t","h","o","n"]y.sort()print(y) #输出结果[h, n, o, p, t, y],按字母先后顺序name ["dhjak ","jkl","dsafd","dasjkdal"]name.sort(keylen) #调整sort的key参数,可以实现按文本长度排序print(name) #输出结果[jkl, dsafd, dhjak , dasjkdal]
元组
- 以小括号形式体现的数据集不同元素之间用逗号隔开
- 元组许多功能与列表相似唯一区别是不能进行修改元素。语法也很简答在这就不一一赘述。
字典
- 字典由“{}”、“键”以及“值”组合而成键和值之间用“:”相连。每个键值对之间由“,”相隔
- 字典是一种**无序**的映射的集合。包含若干个键值对
- 其中字典中的键通常采用字符串但也可以用数字、元组等类型字典值则可以是任意类型。
思考有了列表和元组两个容器我们为什么还需要用字典呢
接下来给大家举一个例子用该例子说明我们字典的优势。
python#开学了现在我们这有一份学员名单以及每个学员的性别如下name ["zhao","qian","sun","li","zhou","wu","zheng","wang"]gender ["F","M","F","F","M","F","M","M"]#现在我们想知道同学"sun"的性别于是我们写了以下代码print(gender[name.index("sun")])#上面这行代码当然是可以为我们反馈正确结果的,但是这个代码写起来非常麻烦。如果我们建立了字典将会大大简化我们的代码。步骤如下:xueyuan {"zhao":F,"qian":M,"sun":F,"li":F,"zhou":M,"wu":F,"zheng":M,"wang":M}print(xueyuan["sun"])
从刚才这个小例子,我们看到了字典的优势也知道了如何建立字典容器。接下来我们来看字典的基本操作
- len(dict)返回dict字典中包含的项(键值对)个数;
- dict[a]返回与键a相关联的值;
- dict[b] value 讲b值关联到key2;
- del dict[c] 删除c的项;
- e in d 检查字典d是否包含键为e的项;
pythondict1 {"name":"zhang","age":10} #创建字典print(len(dict1)) #用函数len()求出字典dict1的键值对个数,返回2print(dict1["name"]) #通过"[键]"可以查出该键所对应的的值,返回"zhang"dict1["age"]12 #更改age所对应的值print(dict1) #返回结果{name: zhang, age: 12}del dict1["age"] #删除"name"项print(dict1) #返回结果{name: zhang}"name" in dict1 #检查字典dict1中是否包含"name"项,返回True
字典的常用方法
- pop() 从字典中删除,并返回映射值
- popitem() 从字典中删除并返回键值对元组
- clear() 删除字典内的全部对象
pythond1 {"a":1,"b":2,"c":3} #创建字典d1d1.pop("a") #删除键为a的键值对,并且返回值1print(d1) #返回{b: 2, c: 3}d1.popitem() #随机的删除d1中某一对键值对,并返回键值对元组。因为字典是无序的不能确定他每次删除的是哪一项键值对。如果本身字典为空在执行该语句会报错。d1.clear() #清除字典内全部对象print(d1) #返回{}
- copy() 复制字典对象
pythonx {"name":"张三","age":"9"} #创建一个字典y x #直接复制时,x和y引用同一个字典print(x,y) #返回{name: 张三, age: 9} {name: 张三, age: 9}y["name"]"李四" #将y中键"name"的值改为"李四"print(x) #x也跟随改变,{name: 李四, age: 9}#可以用方法copy()解决这个问题y x.copy() #y引用复制字典y["name"] "王五" #讲y中键"name"的值改为"王五"print(y,x) #x也跟随改变,{name: 王五, age: 9} {name: 李四, age: 9}
- get(key[,default]) 返回key键映射的值。如果key不存在返回空值。可以用default参数指定不存在的键的返回值。如下例
pythonx {"name":"张三","age":"9"} #创建一个字典x.get("name") #返回键"name"对应值"张三x.get("gender") #没有"gender"键,所以返回空x.get("gender","none") #设定default参数,当没有"gender"键,返回"none"
- setdefault(key[,default]) 用该方法返回映射值或者添加键值对。
- upgrade() 为字典添加键值对若字典已存在同名的键则映射值被覆盖。
pythonx {"name":"张三","age":"9"} #创建一个字典x.setdefault("name") #返回键"name"对应值"张三x.setdefault("gender") #添加新键值对print(x) #返回{name: 张三, age: 9, gender: None}默认给None值x.setdefault(phone,123) #添加新键值对print(x) #返回{name: 张三, age: 9, gender: None, phone: 123}
- items() 返回键值对视图
- keys() 返回字典中所有键的视图
- values() 返回字典中所有值的视图
pythony {name: 张三, age: 9, gender: None, phone: 123} #创建一个字典x.items() #返回键值对视图 dict_items([(name, 张三), (age, 9), (gender, None), (phone, 123)])x.keys() #返回所有键的视图 dict_keys([name, age, gender, phone])x.values() #返回所有值的视图 dict_keys([name, age, gender, phone])