文章目录
15 列表
- 列表可存储不同类型的值
15.1 列表的基本操作
- 创建列表:
r=[12,"i"]
print(r)
# [12, 'i']
r=list('1234')
print(r)
# ['1', '2', '3', '4']
- 列表的特点:
- 获取列表指定元素的索引(index()函数)
l=[1,2,3]
print(l.index(1))
# 0
- 获取列表的多个元素(切片)
- 切片会产生新的列表
l=[1,2,3]
print(l[1:])
# [2, 3]
-
列表查询与遍历
l=[1,2,3] print(1 in l) # True
-
列表的增加操作
l=[1,2,3] # 在末尾加一个元素 l.append(4) print(l) # 在末尾加任意多元素,参数为列表 l.extend([5,6]) print(l) # 在第6个位置加上一个7元素 l.insert(6,7) print(l) # 切片,把切出去的部分用新列表替换 l[1:]=[8] print(l)
-
列表的删除
l=[1,1,2,3] # 删除1元素 l.remove(1) print(l) # 删除第0个元素,若不指定则删除最后一个元素 l.pop(0) print(l) # 切片出第0个到第1个元素 print(l[0:1]) # 清除全部元素 l.clear() print(l) # 删除列表 del(l) print(l) 23 # [1, 2, 3] # [2, 3] # [2] # [] # 报错,没有l变量
-
列表的排序
- sort()不会产生新列表对象
- sorted()会产生新的列表对象
l=[3,2,1] # 不会产生新对象 l.sort() print(l) # 会产生新对象 r=sorted(l) print(l)
-
列表生成式
- 基本语法:
- i for i in 迭代器
# 生成一个1-9元素的列表 lst=[i for i in range(1,10)]
- 基本语法:
16 字典
- 以键值对的方式无序存储数据
- 把key进过哈希函数计算得出位置
- key要求为不可变序列
- key不可重复
16.1 字典的基本操作
- 创建字典:
- 字典元素的获取
s={"张三":100} t=s["张三"] print(t) # 设置默认查找值,当查字典没有的元素时返回默认值 t=s.get("lisi",99) print(t) #100 #99
- key的判断、元素删除、元素新增
- 获取字典视图
s={"张三":100} # 获取所有key print(s.keys()) # 获取所有值 print(s.values()) # 获取所有键值对 print(s.items()) #dict_keys(['张三']) # dict_values([100]) # dict_items([('张三', 100)])
- 字典遍历
s={"张三":100} # item 获取的是key # s[item]获取值 for item in s: print(item) print(s[item])
- 字典生成式
- 基本语法
- for({列表:列表 for 列表,列表 in zip(列表, 列表)})
s=[1,2,3] t=[4,5] print({s: t for s, t in zip(s, t)})
- 若zip打包的两个列表元素数目不一样,则按元素数目少的列表打包
- 基本语法
16.2 字典总结
17 元组
- 是一个不可变序列
17.1 元组的基本操作
- 元组的创建
- 第一种方式可以省略小括号
- 第三种方式如果省略逗号,会被认为是元素原来的类型
- 为什么要把元组设计成不可变序列?
- 遍历元组:
t=1,2,3,4 for i in t: print(i)
- 元组生成式
- 元组没有生成式
18 集合
- 集合是没有value的字典
18.1 集合的基本操作
- 集合的创建
- 集合的元素不能重复
- 空集合创建只能用内置函数进行设置
- 集合的判断,新增,删除
s={1,2,3} # 末尾增加一个元素 s.add(4) print(s) # 末尾至少增加一个元素 s.update([5]) print(s) # 删除一个指定元素 s.remove(2) print(s) # 删除一个指定元素 s.discard(1) print(s) # 一次删除头部一个元素 s.pop() print(s) # 清空元素 s.clear()
- 集合间的关系
s={1,2,3,4} t={3,4} # 判断集合是否相等 print(s==t) # 判断集合t是否是集合s的子集 print(t.issubset(s)) # 判断集合s的父集是否是t print(s.issuperset(t)) # 判断两个集合是否是没有交集 print(s.isdisjoint(t)) #False #True #True #False
- 集合的数学操作
s={1,2,3,4} t={3,4,5,6} # 集合的交集 print(s.intersection(t)) print(s&t) # 集合的并集 print(s.union(t)) print(s|t) # 集合的差集 print(s.difference(t)) print(s-t) # 集合的对称差集 print(s.symmetric_difference(t)) print(s^t)
- 集合生成式
print({i for i in range(1,10)})
18.2 元组与集合总结
19 序列总结
- 不可变序列还有字符串