数据类型一些基本操作方法
一丶列表
list.index(a) 查询列表里元素所在的位置(如果有重复是从左到右第一个元素所在的位置)
list.count(a) 统计指定元素的个数
list[1:6:2] 步长为2,索引为1开始,打印第2,4,6个元素
list[::2] 返回所有的值,步长为2
list.append() 列表末尾添加一个元素。
list.insert(3,'a') 在索引为3的位置插入元素a
list.pop() 删除列表末尾元素。
list.remove(a) 删除从左到右找到的第一个元素。
del list[n ] 删除指定位置的元素(n是索引)。
list.sort() 列表排序,按照大写,小写字母表顺序排序,特殊符号在前面 [‘!’,'A',‘B’,‘c’,‘m’,‘t’]
list.reverse() 反转排序
list.extend(列表) 扩展列表
list[2] = ['e','t'] 直接替换列表中的第三个元素,而不是插入。
list.clear() 清空列表
二丶字典
查询字典中的值
name = { }
name[key]
name.get(key)
name.get(k,v) 字典中获得键的值,如果不存在则返回key。也是向字典里字典里添加键值对的方法。
name.keys() 打印所有的键,以列表的形式呈现。
name.values() 同理
names.setdefault(‘names1’,[default]) 如果键存在,返回键对应的值。如果键不存在,插入这个健,并且以default为键对应的值。
name.update(k,v) 在字典内插入字典的键值对,如果键重复,会覆盖原有的键(update返回的值为None)。
name.items() 返回一个元祖对列表。
dict.fromkeys([1,2,3],'test') 通过一个列表生成默认dict,有坑,少用()后面的值可以是任何一个类型,是一个整体)。
字典的循环
for k in name:
print(k) #打印字典中的键或值
for k ,v in name.items():
print(k,v) #将字典先转换成列表,在打印列表中的值。
dict.popitem() 删除字典中最后的键值对。
三丶集合
集合是一个无序的,不会重复的数据组合。
集合作用:去重,列表变成集合,自动去重。
用于两组数据之间的关系测试(交集,并集等)
集合具有无序性,集合里的元素可随意排列。
补充:hash函数 (可hash的值必须是固定的(元组,字符串))
删除集合中元素的方法
discard() 括号里为删除的元素 集合为空不会报错,会显示set()
pop() 随机删除一个元素,列表为空会报错。
clear() 清空集合
add() 只能添加不可变数据
集合中的交集,差集,并集比较
交集:a.intersection(b)或者a&b
差集:a.difference(b) 或者a - b
并集:a.union(b) 或者 a|b
对称差集:a.symmetric_difference(b) 或者 a^b
in,not in 判断元素是否在集合内
集合之间的相交,不相交,包含关系
set.isdisjoint() 判断两个集合是否不相交
set.issuperset()判断集合是否包含其他集合。
set.issubset() 判断集合是否被其他集合包含。
oct() 八进制
hex() 十六进制
id() 查看内存地址
深浅copy
copy() 浅拷贝 第一层指向的地址不同,后面指向的地址相同
deepcopy() 深拷贝 第一层指向的地址和后面指向的地址都不同。
import copy a = [1,2,[3,4]] b = copy.copy(a) c = copy.deepcopy(a) print(b,c) if b == c: print("True") if b is not c: # 输出为True,表示b和c已经不是来自同一个对象了。 print("True") a[2][0] = "hello" # 改变a的值,浅copy出来的值随着a的改变而改变,可能是个假的copy print(b, c) # deepcopy出来的值是独立的,并没有随着a的改变而改变。 # [1, 2, [3, 4]] [1, 2, [3, 4]] # True # True # [1, 2, ['hello', 4]] [1, 2, [3, 4]]