Python数学建模之常用的内置函数

0.引言

        内置函数不需要导入任何模块即可直接使用,使用下面的语句可以查看所有内置函数和内置对象:

dir(__builtins__)    #__为两个下划线

        下面将介绍几个常用的内置函数。

1.sorted()函数

        sorted()函数的完整参数形式如下:

        sorted(iterable,key=None,reverse=False)

        iterable表示要排序的序列或迭代对象,key用来指定排序规则,默认无指定的排序规则,reverse用来指定升序或降序,默认升序。可以用sorted()对列表、元组、字典、集合或其他可迭代对象进行排序并返回新列表

使用示例:

import numpy.random as nr
x1 = list(range(9, 21))
nr.shuffle(x1)  # shuffle()用来随机打乱顺序
x2 = sorted(x1)    # 从小到大排序
x3 = sorted(x1, reverse=True)   # 从大到小排序
x4 = sorted(x1, key=lambda item: len(str(item)))    # 以字符串长度为排序的依据
print(x1); print(x2); print(x3); print(x4)

运行结果:

[17, 18, 12, 19, 9, 10, 13, 14, 11, 15, 20, 16]
[9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
[20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9]
[9, 17, 18, 12, 19, 10, 13, 14, 11, 15, 20, 16]

        需要注意的是,shuffle()返回的是打乱后的序列或迭代对象,不是新的序列key=lambda item: len(str(item)) 是一个关键字参数,指定了排序的规则。匿名函数 lambda接受一个参数 item 代表列表中的每个元素。str(item) 将每个元素转换为字符串,len() 获取字符串的长度。因此,key=lambda item: len(str(item)) 表示使用元素的字符串长度作为排序的依据。

2.enumerate()函数

        enumerate()函数的完整参数形式如下:

        enumerate(iterable, start=0)

       enumerate()函数用于将一个可迭代对象(如列表、字符串或元组)组合为一个索引序列,同时返回元素和元素的索引start表示索引的起始值,默认为0。

使用示例:

x1 = "abcde"
x2 = list(enumerate(x1, start=2))   # 枚举字符串x1中的元素,索引值从2开始,把返回值转换为列表的形式
print(x2)
for ind, ch in enumerate(x1, start=1):  # 枚举字符串x1中的元素,索引值从1开始,打印每个元素的索引和值
    print(ind, ch)

运行结果:

[(2, 'a'), (3, 'b'), (4, 'c'), (5, 'd'), (6, 'e')]
1 a
2 b
3 c
4 d
5 e

3.map()函数

        map()函数的完整参数形式如下:

        map(function, iterable1, iterable2, ...)

        map()函数用于将一个函数应用于一个或多个可迭代对象的每个元素,并返回一个包含结果的迭代器。

使用示例:

import random
x = random.randint(1e5,1e8)
y = list(map(int, str(x)))
z = list(map(lambda x,y:x % 2 == 1 and y % 2 == 0, [1, 3, 2, 4, 1], [3, 2, 1, 2]))
print(x); print(y); print(z)

运行结果:

5487249
[5, 4, 8, 7, 2, 4, 9]
[False, True, False, False]

        由于x是一个随机数,x、y每次运行的结果可能不同。

        list(map(int, str(x)))的作用是把整数x转化为字符串形式,将字符串形式的 x 拆分为单个字符,并将每个字符转换为整数类型,最后将 map() 返回的迭代器对象转换为列表。        

        list(map(lambda x,y:x % 2 == 1 and y % 2 == 0, [1, 3, 2, 4, 1], [3, 2, 1, 2]))中,匿名函数 lambda接受参数x和y,分别代表列表 [1, 3, 2, 4, 1]和列表[3, 2, 1, 2]中的每个元素,返回每一对x,y对应的函数值,并把结果转换为列表形式。

4.filter()函数

        filter()函数的完整参数形式如下:

        filter(function, iterable)

        filter()函数将一个单参数函数作用到一个序列上,返回该序列中使得该函数取值为True的那些元素组成的filter对象。

使用示例一:

a = filter(lambda x:x > 10, [1, 11, 2, 45, 7, 6, 13])
b = filter(lambda x:x.isalnum(), ['abc', 'xy12', '***'])    # isalnum用于判断字符串的元素是否全部是字母或数字
print(list(a)); print(list(b))

运行结果:

[11, 45, 13]
['abc', 'xy12']

使用示例二:

def filter_non_unique(L):   # 过滤重复值
    return [item for item in L if L.count(item) == 1]
a = filter_non_unique([1, 2, 2, 3, 4, 4, 5])
print(a)

运行结果:

[1, 3, 5]

5.zip()函数

        zip()函数的完整参数形式如下:

        zip(iterable1, iterable2, ...)

        zip()函数用于将多个可迭代对象中的元素按对应位置进行配对,返回一个迭代器。

使用示例:

s1 = [str(x)+str(y) for x, y in zip(['v']*4, range(1, 5))]
s2 = list(zip('abcd', range(4)))
print(s1); print(s2)

运行结果:

['v1', 'v2', 'v3', 'v4']
[('a', 0), ('b', 1), ('c', 2), ('d', 3)]

        对于[str(x)+str(y) for x, y in zip(['v']*4, range(1, 5))]:['v']*4创建了一个列表 ['v', 'v', 'v', 'v']。
range(1, 5)生成了一个从1到4的整数序列 [1, 2, 3, 4]。zip(['v']*4, range(1, 5))将上述两个可迭代对象按对应位置进行配对,得到一个迭代器,配对后的元素为('v', 1), ('v', 2), ('v', 3), ('v', 4)。
str(x)+str(y)对配对后的每个元素(x, y)进行操作,将 x 和 y 转换为字符串,并进行拼接。

你可能感兴趣的:(Python数学建模,数学建模,python,开发语言)