数据类型内置方法¶
哪些方法是有返回值的,哪些是返回None?(可变数据结构的方法都返回None?)
哪些方法不改变原对象,哪些改变,规则是什么?
字符串¶
>>> dir(str)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index',
'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper',
'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
# 查找子串
_str.find(sub_str) # 返回字符串的索引下标,如果不在返回-1
- 校验
# 判断字符串是否以xxx开头/结尾,可以加索引范围,默认从0~-1
_str.startswith(xxx, beg=0, end=len(string))
_str.endswith(xxx, beg=0, end=len(string))
_str.isdigit() # 是否全由数字组成
_str.isalpha() # 是否全是字母组成
_str.isupper() # 是否全大写
_str.islower() # 是否全小写
_str.istitle() # 是否标题样式
- 处理
_str.upper() # 变为全大写
_str.lower() # 变为全小写
_str.capitalize() # 将首字母大写
_str.title() # 标题样式,即所有单词首字母大写
_str.swapcase() # 反转大小写,即将大小变小写,小写变大写
_str.strip() # 去除两端的空白,也可以去除指定字符,下同
_str.lstrip() # 去除左边的空白
_str.rstrip() # 去除右边的空白
"""
"IAWAI".strip("IA") # "W"
"""
# 在指定字符处将字符串分割,组成列表返回
# 指定字符不存在则返回整个字符串
# 指定为空时默认在<空格>\r\n\f\t\v等地方分割
_str.split("x", [分割次数])
"""
"a,b,c,d".split(",", 2) # ["a", "b", "c,d"]
"""
# 把字符串中的“a”替换为“b”
# 注意:不改变原字符串
_str.replace("a", "b", [替换个数])
"""
tel="12345678888"
tel.replace(tel[3:7], "*"*5) # '123*****8888'
"""
# 可以拼接序列的每一个元素
# 序列为list或tuple时元素必须为字符串类型
_str.join(序列)
"""
"+".join("123") # "1+2+3"
"".join(["a","b","c"]) # "abc" # 字符串转用list(_str)转换为列表后可以再用join转换回字符串
"""
- 格式化
x = "c"
# 方式1:%s、%d
_str = "ab%sde" %x
# 方式2:{}.format()
_str = "ab{}de".format("a")
_str = "ab{0}de{1}".format("a", "b") # 索引指定
_str = "ab{k1}de{k2}".format("k1"="a", "k2"="b") # 关键字指定,也可以**{"k1":1, "k2":2}
# 方式3:f'{}'
f'ab{x}de'
tuple¶
>>> dir(tuple)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'index', 'count']
list¶
>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__',
'index', 'count', 'sort', 'reverse',
'append', 'extend', 'insert',
'pop', 'remove',
'clear', 'copy']
# 列表自带排序方法(原对象会被改变)
_list.sort()
_list.sort(reverse=True) # 倒序
_list.sort(key=len) # 按字符长度排
# 内置函数sorted()排序,元素类型要一致可排,否则报错(原对象不变)
sorted(_list) # 正序
sorted(_list, reverse=True) # 倒序
set¶
dir(set)
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__',
'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'symmetric_difference_update', 'union',
'update',
'add',
'pop', 'remove',
'clear', 'copy']
dict¶
>>> dir(dict)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__',
'fromkeys',
'update',
'get', 'setdefault', 'items', 'keys', 'values',
'pop', 'popitem',
'clear', 'copy']
_dict[key] # 若key不存在,则报错
_dict.get(key, "unkown") # 若key不存在,则默认返回None(可自定义)
_dict.setdefault(key, value) # 若key不存在,则将key添加到字典中,值默认为default(可自定义):{key:default}
# 以下都不接受参数
_dict.items() # dict_items([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
_dict.keys() # dict_keys(['k1', 'k2', 'k3'])
_dict.values() # dict_values(['v1', 'v2', 'v3'])
python3.7开始dict是有序的
sorted(_dict.items(), key=lambda x:x[0]) # dict按key排:[('a', 3), ('b', 1), ('c', 2)]
sorted(_dict.items(), key=lambda x:x[1]) # dcit按value排:[('b', 1), ('c', 2), ('a', 3)]
可改变数据类型的操作¶
清空¶
_list.clear()
_set.clear()
_dict.clear()
del _list[:]
增¶
- list
_list.append(x) # x被当作一个整体,添加到末尾
_list.extend(x) # x必须为可迭代的,会被当作一组,组中元素按序添加到末尾
_list.insert(index, x) # x被当作一个整体,插入到指定位置
_list[m:m] = x # 还可以用切片的方式插入
_list[len(_list):] = x # 末尾插入
- set
_set.add(key)
- dict
_dict["new_key"] = new_value
删¶
.pop()
方法在三种数据类型中用法不太一致,需要参数,不需要参数,指定删除,随机删除,删除末位……擦,真特么乱。
不管怎么删除都会返回被删除的元素。而remove不会。
为什么呢?
因为字典带有key,所以可以带参数(且必须带参数,为什么?),按key删除
而list可以下标,可以带参数下标来删除,如果不带就删除末位
set既没有key也不可下标,所以不能带参数,而且还因为无序,不带参数就随机删除
那么.remove()
呢,list和set都是移除指定元素,dict没有
防止要删除的元素不存在报错,加个默认返回值参数.pop(x, None)
- list
_list.pop() # 删除末位,并返回被删除的值
_list.pop(index) # 删除指定位置
_list.remove(x) # 删除指定元素(如有重复,删除第一个)
- set
_set.pop() # 随机删除,并返回被删除的值
_set.remove(x) # 删除指定元素
- dict
_dict.pop(key) # 删除指定key,并返回被删除key对应的值
_dict.popitem() # 随机删除(但其实删除的是末位,字典现在是有序的),并返回被删除的键值对
- del方式删除,释放内存
del _tuple
del _list
del _set
del _dict
del _list[m:n] # 删除list切片
del _dict[key] # 删除dict指定key
改¶
- list
# 修改指定位置元素
_list[-1] = x
- dict
# 同增加
_dict["old_key"] = new_value
最后更新:
2022-04-16