五种数据类型的操作
tuple操作 ()
跟列表一样 但是是只读的 作用:明确的表示元组里存储的数据是不应该被修改
元组不可修改,但元组的元素若是可变的数据类型,则可以修改元组元素的元素
查: tuple.count()
tuple[index]
tuple[1:8]
set { } 是可变的数据类型
但集合内的元素一定是不可变数据类型
关系测试
交集 linux.intersection(python) or linux & python
差集 linux.difference(python) or linux - python
并集 去重 linux.union(python) or linux | python
对称差集 linux.symmetric_difference(python) or linux ^ python
去重
无序
add 添加一个元素,添加成功返回None
update 将2个集合的并集赋给第一个集合,或给一个集合添加多个元素
copy
linux.difference_update()# 求差集并赋值给linux
.disard() 删除 如果元素不存在,不会报错
.pop() 随机删
.remove 如果元素不存在,会报错
.clear
.issubset() 子集 or a > b
.issuperset() 父集 or a < b
.isdisjoint() 没有任何交集 返回真
string 操作:
拼接 'liuliu'+ 'mumu'
'*'.join(['i','am','world']) 设定一个符号将字符拼接起来 join后面跟一个列表
移除空白 name.strip().strip(*) 去除首尾的空格和\n 可指定删除字符如* - =
分割 name.split(' ',1) 用空格分割,分割次数一次 分隔符没有了 变成列表
计算字符串的长度 len(name)
.count() 计算某个字符出现的次数
查找元素 索引 name[1]
切片 name[1:8:2] 顾头不顾尾 步长为2:每隔一个字符,返回字符串1到8的字
查找索引 'fkealngksal'.find('l',1,5) 返回索引值 可指定查找位置1到5 找不到 返回-1
'fkealngksal'.index('l',1,5) 返回索引值 可指定查找位置1到5 找不到报错
格式化输出:
占位符 :%s string
%d digit
%f float
msg = 'my name is %s,and my age is %s'
print(msg % ('liuliu',22))
'njsef,{name},{age}'.format(name='haskjf',age = 22) #推荐
'njsef,{0},{1}'.format('haskjf','fnasjkfj')
替换 name.replace('old','new',count) 替换 及替换的次数 完全匹配
一些需要了解的:
name.capitalize 第一个字母大写
name.lower() 变小写
name.upper() 变大写
name.title() 每个首字母大写
name.startwith() 判断 以 开头
name.endswith() 判断 以 结尾
.expendtabs(20) 设置tab扩展的长度
.isdecimal 正整数 1111
.isdigit 更常用
.isunmeric 更广泛
.isalnum 字母或数字
.isalpha 字母
.isidentifier 是不是合法的关键字/变量名
.islower 判断小写
.isupper 判断大写
.swapcase 大小写转换
.casefold 全部小写 字符串匹配的时候
.istital 是否英文标题, 首字母大写
.isprintable 是否可打印
.isspace 是否空格
格式化打印:
'ajflfn'.center(40,'$') 居中对齐 可设置长度 和补齐的符号
'fesrge'.ljust(50,'*') 左对齐 可设置长度 和补齐的符号
'ahfjefh'.rjust(60,'#') 右对齐 可设置长度 和补齐的符号
'njdfkn'.zfill() 右对齐 用0填充
list 操作:
列表:
创建:name = [ ]
name = list(元素)
查: name[index] 返回索引对应的元素
索引 name[1].index('element') 返回元素的索引或下标
切片name[1:3] 返回元素值 ,顾头不顾尾 设定步长
统计元素出现的次数 name.count('')
len(name) 统计列表内元素的个数
增加:
追加 name.append("") 增加1个
插入 name.insert(index,'element') 指定位置添加
name.extend([7,8]) 增加多个
改: name[name.index('element')] = '' 利用元素修改
name[index] = 'newname' 利用索引修改
删除 name.pop(index) default 删除最后一个元素 返回删除的值
name.remove('element') 指定元素删除
del name[index] 可以删除整个列表 也可以指定位置删除
name.clear() 清空元素
扩展/合并 name.extend(name2) name = name + name2
反转 name.reverse()
排序 name.sort(reverse = True) 排序后反转 数字和字母不能排序 根据ASCII码表排序
copy name2 = name.copy() name2的元素不随name的改变而改变 因为:内存的工作机制
遍历:for i,v in enmu:
print(i.v)
dict key : value 键唯一 字典是无序的
唯一具有映射关系的数据类型,查询数据速度快,高于列表
键唯一 且 可变类型
names = {
123:{'liuliu : 22','mumu : 22','huahua: 55','honghong : 88'},# 字典
345:['kouxiangtang','yinliao','fangbianmian'],# 列表
456:(45,676,56546,454,'sfjdskdlg'),# 元组
'school':'jin', #字符串
112:112# 数字
}
#增:
names[222] = 'mick' # 增加元素
names[345].append(113) # 只有元素中的列表能够追加内容
#删
print(names.pop(123)) #利用key来删除元素,返回元素值
del names[112] # 直接删除元素
print(names.popitem()) #随机删除一个元素,返回元素值
#查
print(names) #打印字典内所有内容
print(names[345])# 打印 key对应的元素值 元组不可查找
print(names.get(20))# 如果查找的元素不存在,不会报错,返回None
print(names.setdefault(key,value)# 查找key对应的值,如果没有就添加key及默认值
print(names.keys())# 查找 字典全部的键
print(names.values())# 查找字典全部的值
print(113 in names) # 判断字典里是否有这个key
#改
names['oldkey'] = 'value' 根据键修改值
names[345][0] = 'wuwu : 56' # 根据索引修改值 修改字典中某一列表的元素 ,元组不可修改,字典不适用
print(names)
#循环
for i in names:
print(i, names[i])
for k,v in names.items(): # 不要用,效率低
print(k,v)
#扩展 将两个字典合并,重合的元素以更新后的值为准
names2 = {
222: 'tom',
333 : 'alex'
}
names.update(names2)
print(names)
#字典的copy 内存回收机制 变量的工作机制
# 应用场景 :银行的正副卡共享
account = {
'name': 'liuliu ',
'id': 1234,
'info':[200,20]
}
account2 = account.copy()
account2['name'] = '骗子'
account['info'][1] += 30
print(account,'\n',account2)
#新建一个字典
print(dict.fromkeys([1,2,3],'test'))