Python学习 Week2 part2
字典
字典是一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个元素用 “,”逗号分割。键必须是唯一的,值不必。值可以是任意类型,但键必须是不可变的。Python3.6之前字典是无序的,3.6版本以后字典换了一种实现方式,提升了性能,副作用使字典变得有序。
字典在其他编程语言中又称作关联数组或散列表
通过键(key)实现元素的存取,无(有)序的,可变的类型容器,长度可变,异构,嵌套
1.字典的创建
1 {}:空字典 2 dictionary={} 3 创建一个字典 4 dictionary={ 5 1:'tenglan wu', 6 2:'jingkong cang', 7 3:'maliya xiaoze' 8 } 9 也可以这样 10 dictionary={ 11 ('aa'):'tenglan wu', 12 'a':'jingkong cang', 13 5: '1', 14 3:1, 15 4: [1] 16 } 17 两种遍历字典的方法: 18 第一种:会将字典转化成列表,数据大量时,很慢,慎用 19 for k,v in dictionary.items(): 20 print(k,v) 21 第二种(高效): 22 for key in dictionary: 23 print(key,dictionary[key])
#字典也可以用索引方式获取,只不过key就是字典的索引了
>>> d1 = {'x':32,'y':[1,2,3,4]}
>>> d1['x']
32
>>> d1['y']
[1, 2, 3, 4]
>>> d1['y'][3:]
[4]
>>> len(d1)
2
2.字典的方法
1 dict.get(key) 取得某个key的value,如果没有就创建 2 dict.keys() 返回所有的key为一个列表 3 dict.values() 返回所有的value为一个列表 4 dict.items() 将字典的键值拆成元组,全部元组组成一个列表 5 dict.pop(key) 删除某个key-value 6 dict.popitem() 随机弹出key-value 7 dict.clear() 清除字典中所有元素(空字典) 8 dict.copy() 字典复制,是浅复制(同列表) 9 dict.fromkeys(S) 用原有字典的key生成一个新字典,v默认为空 10 dict.update(key) 将一个字典合并到当前字典中 11 dict.setdefault(k,v) 如果字典中已存在k不会改变v,如果没有就创建,v默认为空
集合
集合是一个无序不重复元素的集。
基本操作:支持关系测试
支持成员关系测试 in,not in
支持迭代
不支持索引、元素获取、切片
集合中的元素必须是可迭代对象,所有元素不能重复 没有特定语法格式,可以通过大括号或者set()函数来创建 注意:要想创建空集合,必须使用set()来创建,而不是大括号{},大括号是用于创建空字典 s={'a',111,"b"} s=set() 大括号也不可以创建元素含有字典与列表的集合 a={'a','b','c','d'} b=set('abcdefabcd')
c=set({'a':1,'b':2}) #输出为key
d=set(['a','b','c','a'])
适用于可变集合的常用方法:
s.add(item) 将元素增加到集合s中,如果已存在,则无任何效果
s.clear() 将集合s中的元素全部清除
s.copy() 复制集合s,浅copy
s.difference(t) 返回两个集合的差集。形成一个新的集合
s.difference_update(t) 返回两个集合的差集。并覆盖集合s
s.discard(item) 从集合s中剔除元素item,如果item不是该集合成员,则无任何效果
s.intersection(t) 返回两个集合的交集。形成一个新的集合
s.intersection_update(t) 返回两个集合的交集。并覆盖集合s
s.isdisjoint(t) 如果两个集合没有交集,则返回True,反之False
s.issubset(t) 如果s是t的子集,则返回True,反之False
s.issuperset(t) 如果s是t的超集,则返回True,反之False
s.pop() 删除并返回任意元素,如果集合是空的会报错
s.remove(item) 从集合s中删除元素item,如果item不是集合中的成员,则会报错
s.symmetric_difference(t) 返回两个集合的对称差集,既s中有t中没有的元素和t中有s中没有的元素
s.symmetric_difference_update(t) 返回两个集合的对称差集,并覆盖集合s
s.union(t) 求两个集合的并集,既返回两个集合的所有元素(去重)
s.update(t) 将t中的所有元素添加到s中。t可以是另一个集合、一个序列或者支持迭代的任意对象
集合运算符
s | t s和t的并集 s & t s和t的交集 s - t 求差集 s ^ t 求对称差集 len(s) 集合中项数 max(s) 最大值 min(s) 最小值 x in s x 是否是 s 的成员 x not in s x 是否不是 s 的成员
不可变集合
help(frozenset)
字符串操作
字符串常用方法
str.capitalize() 将首字母变大写 str.casefold() 将所有元素变成小写 #此方法仅特殊情况使用 #s = 'ß' #b=s.lower() #c=s.casefold() #print(b,c) #lower() 只对 ASCII 也就是 'A-Z'有效,但是其它一些语言里面存在小写的 #情况就没办法了。 str.center() 以指定字符在字符串两边输出 str.count() 找出指定字符在字符串中出现的次数 str.encode() 返回字符串的编码版本 str.endswith(s) 判断是否以某字符结尾,是为True,反之False str.expandtabs() 定义字符串中table(\t)的长度 str.find() 找出索引对应的字符串的位置,返回-1表示未找到 str.format() 格式化输出 str.format_map() 格式化输出 str.index() 找出索引对应的字符串的位置,未找到会报错 str.isalnum() 判断是否是字母数字,是为True,反之False str.isalpha() 判断是否是字母下划线,是为True,反之False str.isdecimal() 判断是否只有十进制字符,是为True,反之False str.isdigit() 判断是否只有数字,是为True,反之False str.isidentifier()判断是否是有效标识符(都是英文),是为True,反之False str.islower() 判断是否都是小写,是为True,反之False str.isnumeric()判断是否只有数字字符,是为True,反之False str.isprintable() 判断字符串所包含的字符是否全部可打印,是为True,反之False str.isspace() 判断字符串是否为空格,是为True,反之False str.istitle() 判断字符串中所有的单词拼写首字母是否为大写,且其他字母为小写,是为True,反之False str.isupper() 判断字符串是否都是大写,是为True,反之False str.join(str) 以str为分隔符连接字符串 str.ljust(width,fillchar)输出width个字符,字符串左对齐,不足的地方用fillchar补足,默认是空格 str.lower() 将字符串转换成小写 str.lstrip(str) 截去左边的字符,默认为空格 str.maketrans(intab, outtab) 创建字符映射的转换表 配合translate使用 str.partition(str)根据指定的分隔符将字符串从左往右进行分割,返回一个3元素的元组 str.replace(old, new[, max]) 将old替换成new,如果指定max则替换不超过max次 str.rfind(str,start,end)从右往左返回字符串最后一次出现的位置,如果没有匹配为-1,默认开始为0,结束为字符串长度 str.rindex(str)返回字符串str在字符串中最后出现的位置,如果没有则报错 str.rjust(width,fillchar)输出width个字符,字符串右对齐,不足的地方用fillchar补足,默认是空格 str.rpartitiong(str)根据指定的分隔符将字符串从右往左进行分割,返回一个3元素的元组 str.rsplit(str,num)以str从右往左进行分割,生成列表,如有num则分割num次 str.rstrip(str)从右边开始去掉str字符串 str.split(str,num)以str进行分割,str为空占位,生成列表,如有num则分割num次 str.splitlines(bool)在输出结果里是否去掉换行符('\r', '\r\n', \n'),默认为 False,不包含换行符,如果为 True,则保留换行符 str.startswith(str,start,end)检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False,可设定范围 str.strip()移除字符串头尾指定字符,默认为空格 str.swapcase()将字符串大小写进行转换 str.translate()通过映射表替换字符,配合maketrans使用 str.upper()将字符串中的小写字母转为大写字母 str.zfill(int)返回指定长度的字符串,长度不足以0补齐
(以上代码使用Python3.6.1编写,纯手敲,IDE:PyCharm)
以上是本周Python学习笔记part2。
如有错误的地方,欢迎指正,互相学习!
Life is short,you need Python!
人生苦短,我用Python!
当你发现自己的才华撑不起野心的时候,就安静下来学习吧~

浙公网安备 33010602011771号