Python全栈开发之数据类型
2021-06-17 01:03
标签:做了 rom eva sqrt 修改 十六进制 而且 ble 矩阵 Python字符串对象提供了大量方法用于字符串的检测、替换和排版等操作,另外还有大量内置函数和运算符也支持对字符串的操作,字符串对象是不可变的,所以字符串对象提供的字符串方法都是返回修改后的新字符串 列表是最重要的Python内置对象之一,是包含若干元素的有序连续内存空间,当列表增加或删除元素时,列表对象自动进行内存的扩展和收缩,从而保证相邻元素之间没有缝隙 append(x) 将x添加到列表尾部 extend(L) 将列表L内所有元素追加到列表尾部 insert(x,index) 在列表index的位置插入x,如果index为整数或者大于列表长度,则将x添加到列表尾部,如果index为负数或者小于列表长度的相反数则在列表头部插入x remove(x) 在列表中删除第一个值为x的元素 pop([index]) 弹出索引为index的值,如果不指定index则删除最后一个怨怒是 clear() 清空列表,保留列表对象 index(x) 返回x的索引,如果不存在则抛出异常 count(x) 返回x在列表中出现的次数 reverse() 将列表逆转 sort(key=None,reverse=False) 对列表中的元素进行排序,key表示排序规则,False表示升序,True表示降序 犀利的切片 使用切片获取列表部分元素 使用切片为列表增加元素 使用切片替换和修改列表中的元素 使用切片删除列表中的元素 元组与列表的异同点 列表和元组都属于有序集合,都支持双向索引访问内部,以及使用count()、index()、len()、map()、filter()、等大量内置函数和+、*、+=、in等运算符,元组属于不可变序列,列表属于可变序列,因此,元组没有提供append()、insert()、extend()等方法,同样元组也没有提供remove()、pop()方法,不能使用del删除元组中的元素,只能使用del删除整个元组,元组可以使用切片,但是只能使用切片访问元素,不支持修改和删除操作,而且元组在内部做了大量优化,因此,元组的效率比列表要高,访问速度要比列表高许多,建议使用元组,因为元组的不可变性决定了使用元组更加安全可靠 生成器推导式在用法上和列表推导式类似,形式上使用()作为定界符,最大的不同时生成器返回的是一个生成器对象,生成器对象和迭代器对象类似,都具有惰性的特点,只在调用时才会产生新元素,比列表推导式具有更高的效率,空间占用率低,适用于大数据的场景,使用生成器产生元素时,可以将其转换为列表、元组,也可以使用生成器对象的next()方法和next()进行遍历,或者直接使用for循环遍历,但是无论哪种形式,只能从前往后访问其中的元素,不可以访问已经访问过的元素 字典中的每个元素表示一种映射关系或对应关系,根据提供的键作为下标,可以访问对应的值,如果不存在这个键 会抛出异常,内置函数len()、max()、min()、sum()、sorted()、map()、filter()、enumerate()等同样适用于字典 get(x[,y]) 如果字典中存在该键则返回对应的值,否则返回指定值 setdefault(x[,y]) 指定的键存在,返回对应的值,如果键不存在,就添加一个新元素并设置对应值默认为None values() 遍历字典的值 keys() 遍历字典的键 items() 遍历字典的键和值 pop() 弹出指定键对应的元素,并返回被删除的元素 clear() 清空字典中的所有元素 集合属于Python无序可变序列,使用一对大括号作为定界符,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,元素之间不允许重复,集合中只能包含数字、字符串、元组等不可变类型,内置函数len()、max()、min()、sum()、sorted()、map()、filter()、enumerate()等同样适用于字典 集合运算 set() 将列表、元组、字符串、range对象等其他可迭代对象转换成集合,如果原来的数据中存在重复数据,转换成集合后将只保留一个,如果原序列有可变类型,将无法转换成集合,抛出异常 add() 将元素添加到集合中,如果集合中存在该元素将忽略此操作 update() 将另一个集合中的元素添加到当前集合中,并自动去除重复元素 pop() 随机删除并返回集合中的一个元素,如果集合为空则抛出异常 remove(x) 删除集合中一个指定的元素,如果不存在则抛出异常 discard(x) 删除集合中一个指定的元素,如果不存在则忽略此操作 clear() 清空集合 Python全栈开发之数据类型 标签:做了 rom eva sqrt 修改 十六进制 而且 ble 矩阵 原文地址:http://blog.51cto.com/13559120/2287494
列表
L1 = [1,2,3,4]
L2 = [5,6,7,8]
L1 = L1+L2 会产生并返回一个新列表
L1 += L2 实质上是调用extend,并不会产生新列表,效率比+高,推荐使用+=
[x*x for x in range(10)]
# 实现嵌套列表的平铺
vec=[[1,2,3],[4,5,6],[7,8,9]]
[num for elem in vec for num in elem] # 输出[1,2,3,4,5,6,7,8,9]
# 过滤不符合元素
import os
[filename for filename in os.listdir(‘.‘) if filename.endswith(‘.py‘)]
# 同时遍历多个列表或可迭代对象
[(x,y) for x in range(1,4) for y in range(1,6,2) if x==y] 输出[(1, 1), (3, 3)]
# 使用列表推导式实现矩阵转置
mattrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
[[row[i] for row in mattrix] for i in range(10)]# 输出[[1,5,9],[2,6,10],[3,7,11],[4,8,12]]
# 列表推导式可以使用函数或复杂表达式
def fun(x):
if x%2==0:
return x**2
else:
return x+1
[fun(x) for x in range(4) if x>0] # 输出[2,4,4,16]
# 列表推导式支持文件迭代
with open(‘my.ini‘,‘r‘) as f:
print([line for line in f])
# 使用列表推导式生成100以内的素数
from math import sqrt
[p for p in range(2,100) if 0 not in [p%d for d in range(2,int(sqrt(p)+1))]]
num_list = list(range(10))
num_list[::] # 返回包含原列表中所有元素的新列表
num_list[::-1] # 返回包含原列表中所有元素的逆序列表
num_list[::2] # 隔一个取一个,返回包含原列表中偶数位置的列表
num_list[1::2] # 隔一个取一个,返回包含原列表中奇数位置的列表
num_list[3:6] # 指定切片的起始位置
num_list[0:100] # 切片结束位置大于列表长度时,从列表尾部截断
num_list[100] # 抛出异常,不允许越界访问
num_list[100:] # 切片开始位置大于列表长度时,返回空列表
num_list[len(num_list):]=[9] # 在列表尾部插入元素
num_list[:0]=[1,2] # 在列表头部插入多个元素
num_list[3:3]=[4] # 在列表的某个位置插入元素
num_list[:3]=[1,2,3] # 替换元素,等号两边的列表长度必须相等,否则抛出异常
num_list[3:] = [4,5,6] # 连续替换
num_list[::2]=[0]*3 # 隔一个替换一个
num_list[1::2]=range(3) # 从开始位置隔一个替换一个
num_list[:3]=[] # 删除前三个元素
del num_list[::3] # 删除前三个元素
del num_list[::2] # 隔一个删除一个
元组
g=(i**2 for i in range(10)) # 创建生成器对象
print(g) # 输出<generator object <genexpr> at 0x0000028366F8AAF0>
tuple_g=tuple(g) # 将生成器对象转换成元组
print(tuple_g) # 输出(0, 1, 4, 9, 16, 25, 36, 49, 64, 81)
list_g=list(g) # 将生成器对象转换成列表
print(list_g) # 输出[]
g=(i**2 for i in range(10)) # 重新获取生成器
list_g=list(g) # 将生成器对象转换成列表
print(list_g) # 输出[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
g=(i**2 for i in range(10)) # 重新获取生成器对象
print(g.__next__()) # 输出0
print(next(g)) # 输出1
g=(i**2 for i in range(10)) # 重新获取生成器对象
for i in g:
print(i,end=‘ ‘) # 输出0 1 4 9 16 25 36 49 64 81
字典
集合
num1 = {1,2,3,4,5}
num2 = {5,6,7,8,9}
print(num1|num2) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(num1.union(num2)) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(num1-num2) # {1, 2, 3, 4}
print(num1.difference(num2)) # {1, 2, 3, 4}
print(num1&num2) # {5}
print(num1.intersection(num2)) # {5}
内置函数