Python字符串函数,一个比一个狠,你学废了吗?

📅 2026/7/25 6:57:37 👁️ 阅读次数 📝 编程学习
Python字符串函数,一个比一个狠,你学废了吗?

关于函数, 从字符串里查找特定内容, 有用于查找特定组合的函数, 有去除空格的函数, 还有用什么来间隔字符串的函数, 有判断是否为有效数字或字符的函数, 有判断是否全为字符的函数, 有判断是否全为数字的函数, 有将数据改成小写的函数, 有将数据改成大写的函数, 有判断字符串是否以特定字符开始的函数, 也有判断字符串是否以特定字符结尾的函数, 有写入函数有写入文件的函数, 有在数据尾部插入数据的函数, 有在指定位置之前插入数据的函数, 有将字符串转换成列表的函数, 有在数据中查找第一次特定值位置的函数, 有将数据的每一个提取出来加入列表的函数, 有统计数据中某个元素出现次数的函数, 有将数据中第一次出现的特定字符删掉的函数, 有将数据的第2个元素删掉的函数, 有去掉数据指定位置的数据且有返回值的函数, 有去掉原数据中特定元素的函数, 有列表逆序的函数, 有判断某个数据是否为某种类型的函数, 有得到某数绝对值的函数, 有删除列表中索引为2的元素的函数, 有对数据排序的函数, 有创建一个元组的函数, 有查找并返回索引的函数, 有split逆操作的函数以建立字典, 有创建字典的函数, 有清楚字典中所有项的函数, 有复制一个字典且会修改所有字典的函数, 有复制一个字典但只会修改当前字典的函数, 有查询字典中元素的函数, 有将所有字典返回一个列表的函数, 有与items函数作用相同的函数, 有移除字典中元素的函数, 有用一个字典项更新另一个字典项的函数, 有什么都不做的函数, 有执行一段代码的函数, 有计算表达式的函数, 有返回单字符字符串int值的函数, 有创造英语并行迭代新序列的函数, 有自定义函数, 还有加载扩展库以及常用的几种常用的内置函数。

li = ['baby','honey'] for item in li: print item for item in enumerate(li,12): print item for item in enumerate(li,13): print item[0],item[1]

s.() 用来格式化字符的一种新的方法 示例如下:

1 s = ‘I am {0}{1}’

2 print s.(‘’,‘!’)

输出的结果: I am !

map()和函数的结合使用 map(,list)

•()函数

一种函数, 属于内置的, 同时还是一个别的高阶函数。这种函数接收的诸如参数方面, 跟 map() 较相似, 是一个函数 f, 还有一个 list, 然而其行为跟 map() 不一样, 该函数传入的这个函数 f 必然得接收两个参数, 且会针对 list 的每个元素反复去调用函数 f, 最终返回那么一个结果值。

例如,编写一个f函数,接收x和y,返回x和y的和:

def f(x, y):

x + y

调用 (f,

1, 3, 5, 7, 9

)时,函数将做如下计算:

先计算头两个元素:f(1, 3),结果为4;

再把结果和第3个元素计算:f(4, 5),结果为9;

再把结果和第4个元素计算:f(9, 7),结果为16;

再把结果和第5个元素计算:f(16, 9),结果为25;

由于没有更多的元素了,计算结束,返回结果25。

实际该计算乃是针对 list 的全部元素去达成求和操作, 尽管有着内置的求和函数 sum(), 然而, 借助()来实施求和同样是极为轻易的。

它能够接纳第3个可选择的参数, 将之用作计算的起始值。要是把起始值设定成100, 来展开计算:

(f,

1, 3, 5, 7, 9

, 100)

结果将变为125,因为第一轮计算是:

计算初始值和第一个元素:f(100, 1),结果为101。

利用()进行连乘的代码块

def f(x,y): return x * y print reduce(f,[2,4,5,7,12])

•()函数(过滤函数)

()函数是, 内置的, 另外一个可发挥效用的, 高阶函数, ()函数接纳, 一个函数 f, 以及一个list, 这个函数 f 的功用在于,针对每个元素展开判断, 给出 True或者 False, ()依据判断所得结果, 自动剔除不符合条件的元素, 返回由符合条件元素所构成的新list。

例如,要从一个list

1, 4, 6, 7, 9, 12, 17

中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:

def is_odd(x): return x % 2 == 1

然后,利用()过滤掉偶数:

(,

1, 4, 6, 7, 9, 12, 17

结果:

1, 7, 9, 17

#利用过滤函数filter()进行删除None和空字符串 def is_not_empty(s): return s and len(s.strip()) > 0 l = ['test','str',None,'','','END'] print filter(is_not_empty,l) # 利用函数filter()过滤出1~100中平方根是整数的数 import math l = [] for x in range(1,101): l.append(x) def is_int(x): r = int(math.sqrt(x)) return r * r == x print filter(is_int,l)

或者

import math def is_sqr(x): r = int(math.sqrt(x)) return r*r==x print filter(is_sqr, range(1, 101))

•自定义排序函数

内置的 ()函数可对list进行排序:

>>>(

36, 5, 12, 9, 21

5, 9, 12, 21, 36

但, 它是一个高阶函数, 它能够接收一个比较函数用以实现自定义排序, 比较函数的定义为, 传入两个待比较的元素x, y, 若x应当排在y的前面, 此时返回-1, 若x应当排在y的后面, 这时返回1。若x和y相等, 返回0。

因此,如果我们要实现倒序排序,只需要编写一个函数:

def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0

这样,调用 () 并传入 就可以实现倒序排序:

>>> (

36, 5, 12, 9, 21

, )

36, 21, 12, 9, 5

可以针对字符串开展排序操作, 字符串在默认状况下是依照ASCII大小予以比较的:

>>> (

‘bob’, ‘about’, ‘Zoo’, ‘’

‘’, ‘Zoo’, ‘about’, ‘bob’

‘Zoo’排在‘about’之前, 这存在一个原因, 是由于‘Z’的ASCII码比‘a’小。

在对字符串进行排序之际, 有时将大小写忽略掉之后再排序会更契合习惯。请借助()高阶函数, 达成忽略大小写排序的算法。

l = ['bob','about','Zoo','Credit'] def cmp_ignore_case(s1,s2): u1 = s1.upper() u2 = s2.upper() if u1 < u2: return -1 if u1 > u2: return 1 return 0 print sorted(l,cmp_ignore_case)

zip() 函数的使用的介绍

eval(str) 函数可以将str转换成一个表达式执行

和()的使用

#以字符串的形式导入模块和函数 temp = 'sys' model = __import__(temp) foo = 'path' function = getattr(model,foo) print function