列表
reverse反转
sort排序
lst = [1,3,6,4,2,5]
lst.sort()
print(lst) #升序
lst.sort(reverse=True)
print(lst) #降序
字典
keys/values/items
get
dic = {'k1':'v1','k2':'v2'}
v1 = dic['k3'] #报错
print(v1)
结果:报错
v2 = dic.get('k3',666) #返回自定义值,不写返回None
print(v2)
结果:666
pop
dic = {'k1':'v1','k2':'v2','k3':'v3'}
result = dic.pop('k2') #pop删除的值可以查看
print(dic,result)
del dic['k3'] #del删除无法查看
print(dic)
update
dic = {'k1':'v1','k2':'v2','k3':'v3'}
dic.update({'k3':'v33','k4':'v4'}) #存在则修改,不存在则添加
print(dic)
判断是否有敏感字符?
str
v = 'Python全栈21期'
if '全栈' in v:
print('含敏感字符')
list/tuple
lst = ['alex','oldboy','wusir']
if 'wusir' in lst:
print('含敏感字符')
dict
dic = {'k1':'v1','k2':'v2','k3':'v3'}
请判断:k1是否在其中?
if 'k1' in dic: #默认判断的是key
print('存在')
请判断:v2是否在其中?
方式一
msg = '不存在'
if i in dic.values():
if i == 'v2':
msg = '存在'
print(msg)
方式二
list(dic.valuse()) #强制转换成列表
if 'v2' in list(dic.values()):
print('存在')
请判断:k3:v3是否在其中?
value = dic.get('k3')
if value == 'v3':
print('存在')
else:
print('不存在')
习题
让用户输入任意字符串,然后判断字符串是否包列表中的含敏感字符。
lst = ['炸弹','武器','暗杀']
content = input('请输入内容:')
msg = '不含敏感字符'
for i in lst:
if i in content:
msg = '含敏感字符'
break
print(msg)
s = {1,2,3,4,5}
#为了和空字典区分空集合表示为set()
set()
嵌套问题
列表/字典/集合 → #不能放在集合中 + 也不能作为字典的key
哈希算发 → #计算机内部会将数据进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找。
特殊情况
info = {1,2,3,4,True,False,'alex',None,(1,2,3)}
print(info)
#不会显示True,因为True和1是重复的,它们哈希值是一样。
info ={1:'alex',True:'oldboy'}
print(info)
结果:{1: 'oldboy'}
#True和1重复,'oldboy'被认为是修改了'alex'
示例一
#重新开辟内存并赋值,v1/v2使用的不是同一个地址
v1 = [11,22,33]
v2 = [11,22,33]
v1 = 666
v2 = 666
v1 = 'alex'
v2 = 'alex'
示例二
#v1被重新赋值后,其指向新数据的内存地址,原数据内存地址保留。
#对于原数据的内存地址,解释器会将其回收处理。
v1 = [11,22,33]
v1 = [11,22,33,44]
示例三
#v2和v1指向同一个地址
v1 = [11,22,33]
v2 = v1
练习1(内部修改)
v1 = [666]
v2 = v1
v1.append(888)
print(v2) #含有888
练习2(重新赋值)
v1 = [666]
v2 = v1
v1 = [1,2,3] #开辟新内存并重新赋值
print(v2) #结果[666]
练习3(重新赋值)
v1 = 'alex'
v2 = v1
v1 = 'oldboy'
print(v2) #结果'alex'
示例四
v = [1,2,3]
values = [11,22,v]
练习1
v.append(9)
print(values) #结果[11,22,[1,2,3,9]]
练习2
valuse[2].append(9)
print(v) #结果[11,22,[1,2,3,9]]
练习3
v = [1,2,3]
values = [11,22,v]
v = 999
print(values) #结果[11,22,[1,2,3]]列表中的指向没变。
练习4
v = [1,2,3]
values = [11,22,v]
values[2] = 666
print(v) #结果[1,2,3]列表中弟三个元素指向变了,v的指向没变。
示例五
v1 = [1,2]
v2 = [2,3]
v3 = [11,22,v1,v2,v1] #第三和第四个元素的指向和v1指向都一样。
v3[2] = 666 #此时v3中的第三个元素不再指向v1所指向的位置。
print(v3)
查看内存地址
v1 = [1,2,3]
v2 = [1,2,3]
print(id(v1),id(v2)) #地址不一样
v1 = [1,2,3]
v2 = v1
print(id(v1),id(v2)) #地址一样
python的特殊
v1 = 1
v2 = 1
#v1和v2的指向地址本应该不同,但是对于python而言对于常见的数据为了提高性能节约空间会都使用一个地址存储。
int: -5 ~ 256 不在此范围的数字会重新开辟
str: 包含了非字母数字下划线的元素且乘以大于1的数会重新开辟 'alex_*'*5
== 和 is 有什么区别
v1 = [1,2]
v2 = [1,2,3]
v1 == v2
#False
v1 = [1,2]
v2 = [1,2,3]
v1 is v2
#False
v1 = [1,2]
v2 = [1,2]
v1 == v2
#True
v1 is v2
#False
v1 = [1,2]
v2 = v1
v1 is v2
#True
原文:https://www.cnblogs.com/elliottwave/p/12521786.html