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补齐
View Code

 

(以上代码使用Python3.6.1编写,纯手敲,IDE:PyCharm)

 

以上是本周Python学习笔记part2。

如有错误的地方,欢迎指正,互相学习!

 

Life is short,you need Python!

人生苦短,我用Python!

 

当你发现自己的才华撑不起野心的时候,就安静下来学习吧~

posted @ 2017-07-19 08:11  Kiwi_He  阅读(233)  评论(0)    收藏  举报

欢迎访问Kiwi的个人博客!