内建数据结构、函数及文件
后续笔记内容以书本的内容+自身理解的知识进行注释标注记录
tuple 元组
tup = 1, 2, 3
# 逗号分离组成的tuple
tuple('string')
# tuple
a, b, c = tup
# 分别拆包 a = 1, b = 2, c= 3
a, b = b, a
#交换变量
values = 1, 2, 3, 4, 5
a, b, *rest = values
# *rest 截取剩下的元素 *_ 同
list 列表
list的属性、方法
添加、删除元素
list.append('red')
list.insert(1, 'red')
list.pop(2)
list.remove('red')
# append 在尾部添加值,insert在特定位置插入值
# pop 移除特定位置元素,并返回该元素, remove 删除第一个符合的值
list.extend()
# extend 添加多个元素 extend([])
排序 sort
list.sort() #在原数据上执行
list.sorted() # 直接返回复制数据
# 排序
list.sort(key=len)
# 根据字符串长度排序
import bisect
c = [1, 2, 2, 2, 3, 4, 7]
bisect.bisect(c, 2)
# bisect.bisect返回 值应当被插入的 位置
bisect.insort(c, 6)
# bisect.insort将元素插入相应的位置
c
# bisect 函数不会检查列表是否排序, 可能出现错误
切片
# seq 切片
seq = [1, 2, 3, 4, 5, 6, 7, 8]
对应的位置 0, 1, 2, 3, 4, 5, 6, 7
python 位置从0开始
seq[3:4] = [9, 9]
seq
# 切片seq[3;4] 赋值[9, 9], 切片包含位置 3, 不含 位置 4
seq[:5], seq[3:], seq[-4:], seq[-6:-2]
seq[::2]
# 每隔2个数取一个值
seq[::-1]
# 翻转 逆取
重点方法 enimerate( )
enumerate (i, value)
# i是元素的索引 value是元素的值 构建字典
some_list = ['foo', 'bar', 'baz']
mapping = {}
for i, v in enumerate(some_list):
mapping[v] = i
# v 是值'foo', i 是对应的序号
mapping
zip( )
zip
# 将list,tuple或其他序列的元素配对,新建一个tuple构成的list
seq1 = ['one', 'two', 'three']
seq2 = ['1', '2', '3']
seq3 = [True, False]
list(zip(seq1,seq2,seq3))
# zip 配对多个列表, 取决于最短的序列seq3
enumerate(zip())
for i, (a, b) in enumerate(zip(seq1, seq2)):
print('{0}: {1}, {2}'.format(i, a, b))
# enumerate生成 zip(seq1, seq2)元组的字典,最后 .format()进行输出
zip(*tuple)
pitchers = [('one', '1'), ('two', '2'), ('three', '3')]
# tuple组成的list
first_name, second_name = zip(*pitchers)
# zip(*pitchers)拆分,第一个元素、第二个元素
first_name, second_name
#tuple 组成的 tuple
list(reversed(range(10)))
# reversed 将序列的元素倒序排列
字典 dic
d1= {}
d1[7] = 'an 7'
# 添加 key 7 : value 值
d1[7]
# 根据key 进行查询
刪除字典对应的键
del d1[7]
# del 删除 key
d1.pop(7)
# pop 删除 key 并返回 key 对应的 value
d1.keys()
# d1 的 key
d1,values()
# d1 的 value
合并dic
d1.update({7: 'siven', 8: 'eight'})
# 字典合并到 d1, 相同的 key 会被覆盖 key 7
d1
构建dic
mapping = dict(zip(range(5), reversed(range(5))))
# dict 构建字典
mapping
dict.get()方法
dict.get(key, default_value)
# 字典中有key,去对应的value , else key不在,取 默认值default_value
d1.get(7, 10)
# key 7 在字典中
d1.get(9, 10)
# key 9 不在字典d1
书本例子讲解(首字母分类)
#首字母分类
words = ['apple', 'bat', 'bar', 'atom', 'book']
by_letter = {}
for word in words:
letter = word[0] # 取每个单词的首字母 letter
if letter not in by_letter: # 如果首字母不在字典by_letter中
by_letter[letter] = [word] # key leeter : word 生成对应的 key:value
else :
by_letter[letter].append(word) # 如果首字母的key已经存在,尾部append value
dict 键
dict 的键必须是不可变的对象
比如 标量类型或 tuple(内部对象必须是不可变的)
hash((1, 2, [2, 3]))
# hash 检查是否可以组成dict的键, tuple内部的[2,3]是可变的,所以无法作为dict 的key
集合 # 无序且元素唯一的容器,详见书 p68-p69
# 列表、字典、集合推导式
list = [x.upper for x in a if len(x) > 2]
dict = {key : value for value in collection if condition}
set = {expr for value in collection if condition }
函数 func
my_function(1,2, z=7)
# 位置参数、关键字参数 关键字必须在位置参数后
文本简单清洗
正则表达式
def remove_punctuation(value):
return re.sub('[!#?]', '', value) # func 清洗符号, value是值
clean_ops = [str.strip, remove_punctuation, str.title]
# 多个清洗函数
def clean_strings(strings, ops): # strings 是数据, ops 是多个清洗方法
result = []
for value in strings: # value 值
for function in ops: # 迭代函数
value = function(value) # 清洗
result.append(value) # 清洗结束后添加到result
return result
map
for x in map(remove_punctuation, data): # map 调用函数
print(x)
lambda
匿名函数 lambda x : x.upper
# x 進行大寫操作
好的,第三章知识点记录结束