#序列类型简介(Sequence)
列表list,元组tuple,字典dic,集合set
#列表
- 定义:一系列特定元素组成的,元素之间没有任何关联,但有先后顺序关系。
Python中的list可以看做是一种支持泛型的序列(sequence)(相同的东西,集中在了一起)
列表可以改变元素的值
列表是一种容器 - 空列表:
L = []
L = list() - 非空列表:
L = [1,2,3,5]
L = ["beijing","shanghai","shenzhen"]
L = [[1,2],[3,4],[5,6]]
L = [123,234,"beijing",123,"shangahi"] - 列表生成函数 list()
list()
list(iterateble):构造具有初始化对象的列表。 - list的操作
*=,是重复叠加列表 - list赋值
改变list本身,不会产生新的list - 切片赋值
[start:end],[start:end:step] - 对于步长为1的切片赋值
左右 - 对于步长大于1的切片赋值
左右两边的数的个数要相等,逐一替换
L=[1,2,3,4,5,6]
L[0::2]=[100,200,300] - 切片被字符串赋值时,字符串是按字符去替换的
L=[1,2,3,4,5,6]
L[::2]="ABC" #L = ['A',2,'B',4,'C',6] - python中常用的序列函数
len(x)
max(x)
min(x)
sum(x)
any(x)
all(x) #全部为真值返回True - Python3中列表的常用属性方法
L.index(value,begin,end)
L.insert(index,obj)
L.count(x)
L.remove(x)
L.copy()
L.append(x) #尾部添加单个元素
L.extend(list) #列表追加一个列表
L.clear() # 清空列表,等同于L[:]=[]
L.sort(reverse=False) #默认为升序,reverse=True(降序)
L.reverse() #列表反转
L.pop([index]) #删除索引对应的元素,如果无index,则删除末尾的元素,函数的返回值为删除的元素。 - 列表的嵌套:
L=[1,2,3]
L1 = [10,L,30] #L1 = [10,1,2,3,30 - 复制列表
深拷贝和浅拷贝 - 浅拷贝
L.copy(), 列表嵌套之后,进行copy,原列表和拷贝列表中的嵌套列表指针公共地指向被嵌套的列表
L.copy()copy函数,L[:],切片赋值是浅拷贝 - 深拷贝:将对象逐层复制
import copy #导入copy包
L= [20,21,22]
L1 = [1,L,2]
L2 = copy.deepcopy(L1)
L[2] = 25
以上L[2] = 25,不会改变L1中的值 - 列表的可迭代对象
L=[2,3,4,5,7]
for x in L:
print(x) - 列表推导式(list comprehension)
列表推导式是用可迭代对象,依次生成列表内元素的方式
语法:
[statement for var in obj]
or
[statement for var in obj if condition]
例子:
>>>L =[1,2,3,4,5]
>>> L1 = [i**2 for i in x if i >2]
注意两层循环嵌套
[i*j for i in obj1 for j in obj2]
#字符串和list的区别
- 字符串不可改变,只能存储字符
- list可改变,可使用泛型
- 都是序列,有先后顺序
#元组
- 不可改变的序列,与list一样,不能改变的list,元组可以存放任意的值
- 表示方法:()
- 创建空元组
t = ()
t = tuple() - 创建非空元组
t = (1,2,3)
t = 10, - 序列赋值
x,y = 10,20 - 其余与list相似
#字典
- 什么是字典
字典无序
以键-值对的形式存储数据
字典的表示方法是{},:为其key-value的分隔符
字典的键,不能重复 - 创建空字典
d = {}
d = dict() - 创建非空字典
d = {"name":"jam","age":35}
d = [{"name":"zhangsan","age":30,"score":20},{"name":"lisi","age":30,"score":20}] - key必须为不可变类型,bool,int,float,complex,str,tuple,frozenset(固定集合)包括None
list集合,dict字典,,set集合,不可以作为key - 字典的遍历
for k,v in d.items():
... print k,":",v - 添加、修改字典的元素
d["name"] = "zhangsan" - 字典的基本函数操作:
len(x)
..... - 生成函数:
dict()
dict( - 字典的方法:
D.clear()
D.pop(key)
D.copy() # 浅拷贝
D.update(D2) #D与D2的key相同,进行更新
D.get(key)
D.keys()
D.values()
D.items() - 字典的推导式:
{健表达式:值表达式 for i in obj if condition}
numbers = [1001,1002,1003,1004]
#集合,(使用的不多,了解即可)
- 什么是集合
无value的字典
无序的存储结构,无先后关系
保存的对象不可重复 - 空集合
set() - 非空集合
set(iterable)函数 - 集合的运算:
交集,并集,补集,子集,超集,对称补集 - Python3中常用的方法:
帮助文档,用的时候查找 - 集合推导式:
类似 - 固定集合 frozenset
不可被改变的集合