大纲
列表
定义
Python 中可以通过组合一些值得到多种复合数据类型。
列表是其中最常用得数据结构
列表通过方括号起,逗号分隔的一组值得到
一个列表可以包含不同类型的元素,但通常使用时各个元素类型相同
列表的特性
list.append(x): 在列表的末尾添加一个元素。相当于a[len(a):] = [x].
list.insert(i,x): 在给定的位置插入一个元素。第一个参数是要插入的元素的索引,以a.insert(0,x)插入列表头部,a.insert(len(a),x)等同于a.append(x).
list.remove(x): 移除列表中第一个值为x的元素。如果没有这样的元素,则抛出ValueError异常。
list.pop([i]): 删除列表中给定位置的元素并返回它。如果没有指定位置,a.pop将会删除并返回列表中的最后一个元素、
list.sort(key=None, reverse=Flase): 对列表中的元素进行排序(参数可用于自定义排序,解释请参见 sorted()).
list.reverse(): 反转列表中元素
示例:
list_hogwarts=[1,2,3,5,7,4] list_hogwarts.append(0) #list_hogwarts.insert(0,9) #list_hogwarts.remove(1) y = list_hogwarts.pop(0) print(y) print(list_hogwarts)
list_hogwarts.sort(reverse=True) # True升序 Flase降序 print(list_hogwarts) list_hogwarts.reverse() # 反转 print(list_hogwarts)
列表的特性
list.clear() 删除列表中所有的元素。相当于del a[:].
list.extend(iterable): 使用可迭代对象中的所有元素来扩展列表。相当于 a[len(a):] = iterable
list.index(x[,start[,end]])
返回列表中第一个值为x的元素的从来零开始的索引。如果没有这样的元素将会抛出ValueError异常
可选参数start和end是切片符号,用于将搜索限制为列表的特定子序列。返回的索引是相对于整个序列的开始计算的,而不是start参数
list.count(x): 返回元素x在列表中出现的次数
list.copy(): 返回列表的一个浅拷贝,相当于a[:]
注意:
insert, remove 或者sort方法,只修改列表,没有打印出返回值—它们返回默认值None,这是python中所有可变数据结构的设计原则
并非所有数据或可以排序或比较(字符串和数字等)
列表推导式
概念:列表推导式提供了一个更简单的创建列表的方法。常见的用法是把某种操作应用于序列或可迭代对象的每个元素上,然后使用其结果来创建列表,或者通过满足某些特定条件元素来创建子序列。
练习:如果我们想生成一个平方列表,比如[1,4,5,…],使用for循环应该怎么写,使用列表生成式又应该怎么写呢?
list_square=[] for i in range(4): list_square.append(i**2) print(list_square) list_square2=[ i**2 for i in range(1,4)] print("list_square2",list_square2)
list_square3=[] for i in range(1,4): if i!=1: list_square3.apped(i**2) print(list_square3) list_square3=[i**2 for i in range(1,4) if i!=1]
list_square4=[] for i in range(1,4): for j in range(1,4): list_square4.append(i*j) list_square4=[i*j for i in range(1,4) for j in range(1,4)] print(list_square4)
元组
元组使用()进行定义
tuple,list,range都是序列数据类型
元组是不可变的,可以通过解包,索引来访问
#元组定义 tuple_hogwarts = (1,2,3) tuple_hogwarts2 = 1,2,3 print("tuple_hogwarts",tuple_hogwarts) print(type(tuple_hogwarts)) print("tuple_hogwarts2",tuple_hogwarts2) print(type(tuple_hogwarts2))
list_hogwarts = [1,2,3] list_hogwarts[0] = "a" print(list_hogwarts) tuple_hogwarts = (1,2,3) tuple_hogwarts[0] = "a" # 会报错元组,不可修改
tuple_hogwarts = (1,2,a) print(id(tuple_hogwarts[2])) tuple_hogwarts[2][0] = "a" # 嵌套可以修改 print(id(tuple_hogwarts[2])) print(tuple_hogwarts)
a= (1,2,3,"a","a") print(a.count("a")) # 统计元素出现次数 print(a.index(3)) # 求对应元素的索引
集合
集合是由不重复元素组成的无序的集
它的基本用法包括成员检测和消除重复元素
可以使用{}或者set()函数创建集合
要创建一个空集合只能用set()而不能用{}
a = {1} b = set() print(len(b)) print(type(a)) print(type(b))
a = {1,2,3} b = {1,4,5} print(a.union(b)) print(a.intersection(b)) print(a.difference(b)) a.add("a") print(a)
print({i for i in "asdasdafafasfasf"}) c = "dasdasdasdasd" print(set(c))
字典
字典是以【关键字】为索引
关键字可以是任意不可变类型,通常是字符串或数字。如果一个元组只包含字符串,数字或元组,那么这个元组也可以用作关键字
hogwarts_dict = {"a":1,"b":2} hogwarts_dict2 = dict(a=1,b=2) print(" hogwarts_dict", hogwarts_dict) print(type(hogwarts_dict)) print(" hogwarts_dict2", hogwarts_dict2) print(type(hogwarts_dict2))
a = {"a":1,"b":2} b = dict(a=1,b=2) print(a.keys()) print(a.values()) print(a.pop("a")) print(a) print(a.popitem()) # 随机删除键值对 print(a)
a={} a.fromkeys((1,2,3),"a") print(b) print({i : i*2 for i in range(1,3)})