eval() – 字符串表达式处理
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
1 2 3 4 5 6 7 8 9 10
| >>>x = 7 >>>eval( '3 * x' ) 21 >>> eval('pow(2,2)') 4 >>> eval('2 + 2') 4 >>> n=81 >>> eval("n + 4") 85
|
re.escape(pattern) – 大段语句防止被转义
re.escape(pattern) 可以对字符串中所有可能被解释为正则运算符的字符进行转义的应用函数。如果字符串很长且包含很多特殊技字符,而你又不想输入一大堆反斜杠,或者字符串来自于用户(比如通过raw_input函数获取输入的内容),且要用作正则表达式的一部分的时候,可以使用这个函数。
1 2 3 4 5
| >>> re.escape('www.python.org') 'www\\.python\\.org'
>>>re.findall(re.escape('w.py'),"jw.pyji w.py.f") ['w.py', 'w.py']
|
str.maketrans(intab,outtab[,delchars])–创建字符翻译映射表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| intab = "aeiou" outtab = "12345" deltab = "thw" trantab1 = str.maketrans(intab,outtab) trantab2 = str.maketrans(intab,outtab,deltab) test = "this is string example....wow!!!" print(test.translate(trantab1)) print(test.translate(trantab2)) print(test.translate(trantab1,'xm'))
输出结果: th3s 3s str3ng 2x1mpl2....w4w!!! 3s 3s sr3ng 2x1mpl2....4!!! th3s 3s str3ng 21pl2....w4w!!!
|
与.translate(table[, deletechars])
一起使用
divmod(a,b):
divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
1 2 3 4 5 6 7 8
| >>>divmod(7, 2) (3, 1)
>>> divmod(8, 2) (4, 0)
>>> divmod(1+2j,1+0.5j) ((1+0j), 1.5j)
|
zip():
zip([iterable, ...])
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
我们可以使用 list() 转换来输出列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| >>>a = [1,2,3] >>> b = [4,5,6] >>> c = [4,5,6,7,8] >>> zipped = zip(a,b) >>> zipped <zip object at 0x103abc288> >>> list(zipped) [(1, 4), (2, 5), (3, 6)] >>> list(zip(a,c)) [(1, 4), (2, 5), (3, 6)] >>> a1, a2 = zip(*zip(a,b)) >>> list(a1) [1, 2, 3] >>> list(a2) [4, 5, 6] >>>
|
需要注意的是zip()函数创建的是一个只能访问一次的迭代器。比如,下面的代码就会产生错误
1 2 3
| prices_and_names = zip(prices.values(), prices.keys()) print(min(prices_and_names)) print(max(prices_and_names))
|
collections.Counter():
是一个计数器,返回一个类字典类型数据。
1.创建:
1 2 3 4
| >>> c = Counter() >>> c = Counter('gallahad') >>> c = Counter({'a': 4, 'b': 2}) >>> c = Counter(a=4, b=2)
|
2.计数器的更新(update和subtract):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| >>> c = Counter('which') >>> c.update('witch') >>> c['h'] 3 >>> d = Counter('watch') >>> c.update(d) >>> c['h'] >>> c = Counter('which') >>> c.update('witch') >>> c['h'] 3 >>> d = Counter('watch') >>> c.update(d) >>> c['h'] 4
|
1 2 3 4 5 6 7 8 9
| >>> c = Counter('which') >>> c.subtract('witch') >>> c['h'] 1 >>> d = Counter('watch') >>> c.subtract(d) >>> c['a'] -1
|
一些方法:
elements():
返回一个迭代器。元素被重复了多少次,在该迭代器中就包含多少个该元素。元素排列无确定顺序,个数小于1的元素不被包含。
1 2 3
| >>> c = Counter(a=4, b=2, c=0, d=-2) >>> list(c.elements()) ['a', 'a', 'a', 'a', 'b', 'b']
|
most_common([n]):
返回一个TopN列表。如果n没有被指定,则返回所有元素。当多个元素计数值相同时,排列是无确定顺序的。
1 2 3 4 5
| >>> c = Counter('abracadabra') >>> c.most_common() [('a', 5), ('r', 2), ('b', 2), ('c', 1), ('d', 1)] >>> c.most_common(3) [('a', 5), ('r', 2), ('b', 2)]
|
算术和集合操作:
+、-、&、|操作也可以用于Counter。其中&和|操作分别返回两个Counter对象各元素的最小值和最大值。需要注意的是,得到的Counter对象将删除小于1的元素。
1 2 3 4 5 6 7 8 9 10
| >>> c = Counter(a=3, b=1) >>> d = Counter(a=1, b=2) >>> c + d Counter({'a': 4, 'b': 3}) >>> c - d Counter({'a': 2}) >>> c & d Counter({'a': 1, 'b': 1}) >>> c | d Counter({'a': 3, 'b': 2})
|
常用操作:
1 2 3 4 5 6 7 8 9 10 11
| sum(c.values()) c.clear() list(c) set(c) dict(c) c.items() Counter(dict(list_of_pairs))
c.most_common()[:-n:-1]
c += Counter()
|
注:
计数值的访问与缺失的键:
当所访问的键不存在时,返回0,而不是KeyError;否则返回它的计数。
1 2 3 4 5 6 7
| >>> c = Counter("abcdefgab") >>> c["a"] 2 >>> c["c"] 1 >>> c["h"] 0
|
键的删除:
当计数值为0时,并不意味着元素被删除,删除元素应当使用del。
1 2 3 4 5 6 7 8 9 10
| >>> c = Counter("abcdcba") >>> c Counter({'a': 2, 'c': 2, 'b': 2, 'd': 1}) >>> c["b"] = 0 >>> c Counter({'a': 2, 'c': 2, 'd': 1, 'b': 0}) >>> del c["a"] >>> c Counter({'c': 2, 'b': 2, 'd': 1})
|