1. 将字符串转换成字典的小方法:
'''方法1'''
s='abcd'
d=dict(zip(range(len(s)),s))
'''方法2'''
d=dict()
for index,element in enumerate(s):
d[index]=element
2. 快速计算字符串中每一个字符出现的频率
s='arrange'
d = {}
for x in s:
d[x] = d.get(x, 0) + 1
3.join用法
python 中join用来将数组/字典中的元素以指定连接符连接到一起
比如:
t=list('arrangement')
t.sort()
t=''.join(t)
新的t结果为:
'aaeegmnnrrt'
这样就对string完成了整理。
4. set的使用
简单来说,set就是把一串序列、字典变化成一个只包含不重复key 的列表
'''返回去除了d1与d2交集的d1'''
def subtract(d1, d2):
return set(d1) - set(d2)
'''判断t中是否有重复代码'''
def has_duplicates(t):
return len(set(t)) < len(t)
'''常规方法判断available中是否包含word中所有的字符'''
def uses_only(word,available):
for letter in set(word):
if letter not in available:
return False
return True
'''使用set判断available中是否包含word中所有的字符'''
def uses_only(word,available):
return set(word)<=set(available)
5. Counter 的使用
Counter被用作计算string ,list,dict类型中element 出现的频率,比如
'''计算parrot各个字母出现的频率'''
from collections import Counter
count=Counter('parrot')
print(count)
Counter({'r': 2, 'a': 1, 'p': 1, 't': 1, 'o': 1})
print(count['d'])
#count['d']与dict不同,这个表达式输出结果为0,而不是exception
0
type(count)
<class 'collections.Counter'>
'''计算word1与word2是否包含相同的字符,一致返回True,不一致返回False'''
from collections import Counter
def is_anagram(word1,word2):
return Counter(word1)==Counter(word2)
word1='word1'
word2='word2'
is_anagram(word1,word2)
'''计算字符串中排名前3的key及frequent'''
from collections import Counter
count=Counter('parrot')
for val,freq in count.most_common(3):
print(val,freq)
#result
r 2
a 1
p 1
6. 将bytes类型转换为utf-8类型
如何将bytes转换为str类型,只需要将其转换为utf-8类型的str
x=b'xxx'
str(x,'utf-8')
7. filter的使用
fiter是在列表中筛选满足条件的数值并成立新的列表
def f1(x):
if x>20:
return True
else :
return False
l1=[1,3,25,3,30,2]
l2=filter(f1,l1)
l3=[]
for t in l2:
l3.append(t)
print(l3)
[25]
[25, 30]
8.map的使用
转载来源:http://blog.csdn.net/damotiansheng/article/details/44139111
map 用意是映射每个列表中相应元素并返回新的列表
l1=[0,1,2,3,4,5,6]
l2=['SUN','M','TU','W','TH','F','S']
def f1(x,y):
return (x,y)
map(f1,l1,l2)
<map object at 0x7f98e12181d0>
l3=map(f1,l1,l2)
print(l3)
<map object at 0x7f98db2725c0>
print(list(l3))
[(0, 'SUN'), (1, 'M'), (2, 'TU'), (3, 'W'), (4, 'TH'), (5, 'F'), (6, 'S')]
f1
<function f1 at 0x7f98db277048>
map函数会根据提供的函数对指定序列做映射。
map函数的定义:
map(function, sequence[, sequence, …]) -> list
通过定义可以看到,这个函数的第一个参数是一个函数,剩下的参数是一个或多个序列,返回值是一个集合。
function可以理解为是一个一对一或多对一函数,map的作用是以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的list。
比如要对一个序列中的每个元素进行平方运算:
map(lambda x: x ** 2, [1, 2, 3, 4, 5])
返回结果为:
[1, 4, 9, 16, 25]
在参数存在多个序列时,会依次以每个序列中相同位置的元素做参数调用function函数。
比如要对两个序列中的元素依次求和。
map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
map返回的list中第一个元素为,参数序列1的第一个元素加参数序列2中的第一个元素(1 + 2),
list中的第二个元素为,参数序列1中的第二个元素加参数序列2中的第二个元素(3 + 4),
依次类推,最后的返回结果为:
[3, 7, 11, 15, 19]
要注意function函数的参数数量,要和map中提供的集合数量相匹配。
如果集合长度不相等,会以最小长度对所有集合进行截取。
当函数为None时,操作和zip相似:
map(None, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
返回结果为:
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
9.reduce函数的使用
reduce函数,reduce函数会对参数序列中元素进行累积。
reduce函数的定义:
reduce(function, sequence[, initial]) -> value
function参数是一个有两个参数的函数,reduce依次从sequence中取一个元素,和上一次调用function的结果做参数再次调用function。
第一次调用function时,如果提供initial参数,会以sequence中的第一个元素和initial作为参数调用function,否则会以序列sequence中的前两个元素做参数调用function。
reduce(lambda x, y: x + y, [2, 3, 4, 5, 6], 1)
结果为21( (((((1+2)+3)+4)+5)+6) )
reduce(lambda x, y: x + y, [2, 3, 4, 5, 6])
结果为20
10. getattr,hasattr,setattr的定义
hasattr(object,name):判断对象object中是否有name属性,返回值true或false
setattr(object,name,values),在对象objec中设置属性name,若不存在就先创建并赋值为values
getattr(object,name[,values]),获取对象object中的name属性,如果没有这个属性就返回默认值values
11. locals()和globals()
两种方法均是查看变量,不同的是locals是浅拷贝,globals是深拷贝。
12. id,is,与“==”函数
id(object)是获取对象的id值
oba is obb 判断对象a与对象b的id是否相同
oba == obb 判断对象a与对象b的值是否相同
13. 解读:int(object, base=value)
此句含义是将object转换为以base进制的int值,如:
int('13',base=6)
意思为将6进制的13转换为10进制数。
16. pow函数的使用
pow(x,y)意思是计算x的y次方,即x**y
pow(x,y,z)的意思是先计算x的y次方,然后将结果对z取模,即(x**y)%z
17. round函数的使用
round函数实现对浮点数进行保留位数,
round(x[,n]),浮点数x,保留小数位数n,
使用round函数需注意python版本问题带来的坑,可参见:
简单来说就是python2与python3之间存在不同的round定义,因此在迁移过程中应注意.
18.解读:str.center(width[,fillchar])
生成一个长度为widh的字符串,将str设置为居中,如果len(str)
19 解读:str.count(want_str,start,end)
在len(str)的[start,end)区间内查找want_str
20. format函数
format函数比%更强大,使用方法也更灵活,
(1) 最常使用:通过位置来填充
//按照默认顺序填充
'{}{}'.format('hello','world')
//指定顺序填充
'{0}{1},{0}!'.format('hello','world')
//指定属性名称填充
'{arg1}{arg2}'.format(arg1='hello',arg2='world')
//使用列表填充
l1 = ['hello','world']
'{0[0]},{0[1]}'.format(l1)
//使用字典填充
d1 = {'name1':'hello','name2':'world'}
'{arg1[name1]},{arg1[name2]}'.format(arg1=d1)
//通过对象属性填充
class Names():
name1 = 'hello'
name2 = 'world'
'{Names.name1}{Names.name2}'.format(Names=Names)
//使用变参
args = ['hello','hello again']
kwargs = {'name1':'world','name2':'big world'}
'{},{name1},{},{name2}'.format(*args,**kwargs)
//用作转义
'{{hello,{}}}'.format('world')
//用作函数
foo = '{},{}'.format
foo('hello','world')
//格式化时间
from datetime import datetime
now = datetime.now()
'{:%Y-%m-%d}'.format(now)
//用作内嵌
'hello {0:>{1}}'.format('world',50)
//!s代表输出为str,!r代表输出为repr,!a代表输出为ascii
//注:简单来讲,repr和str的差别在于str输出至用户,而repr面向python,
'{!s}'.format('2') #2
'{!r}'.format('2') #'2'
// <代表左对齐,^代表居中,>代表右对齐,:后跟填充的单一类型字符,默认填充空格,f代表精度,
'{:a<8.2f}'.format(5.2345) #5.23aaaa
//b代表二进制,d代表十进制,o代表八进制,x代表十六进制
'{:b}'.format(4) # 100
21. 解读:str.isalnum
判断str中是否为纯字母与数字.
22. 解读:”link_str”.join([“str_a”,”str_b”])
实现str_a与str_b通过link_str进行连接,结果为”str_alink_strstr_b”,注意join内为元组或列表
23. 解读:str.strip(delete_str),str.lstrip(delete_str),str.rstrip(delete_str)
去除str中首尾包含delete_str的字符,去除首侧包含delete_str的字符,去除尾侧包含delete_str的字符,如果delete_str为空,则删除空格
24. 实现字符串大小写变换的功能
str.lower():字符串小写
str.upper():字符串大写
str.swapcase():交换字符串大小写
str.capitalize():字符串首字符大写
str.title():字符串中所有字符都是以大写开始
str.capwords(want_str):只将want_str大写;
25. 解读:str.zfill(width)
向str左侧填充width-len(str)个0
26. try语句的使用方法:
try:
#Normal execution block
except A:
#Exception A handle
except B:
#Exception B handle
except:
#Other exception handle
else:
#if no exception,get here
finally:
#do something
28. 判断列表中元素类型
insintantce(element, type)
29. 合并两个字典
x = {"a": 1, "b": 2}
y = {"b": 3, "c": 4}
z = {**x, **y} // {'c': 4, 'a': 1, 'b': 3}
30. sorted的用法
文章参考:
# How to sort a Python dict by value
# (== get a representation sorted by value)
>>> xs = {'a': 4, 'b': 3, 'c': 2, 'd': 1}
>>> sorted(xs.items(), key=lambda x: x[1])
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]
# Or:
>>> import operator
>>> sorted(xs.items(), key=operator.itemgetter(1))
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]
第一种方法中的key代表排序关键字,我理解这个参数需是一个函数,x[1]代表要排序的是是第2个元素,也就是1,2,3,4,。
31.get的用法
students = {
1: "小王",
2: "小李",
3: "小马",
}
# print(students)
def greeting(studentid):
return "hi {}".format(students.get(studentid, "there"))
greeting(3) // hi 小马