# python数据处理中一些常用的函数

### 目录

• enumerate()
• filter()
• lambda
• [i for i in range(1,10)] 列表解析
• sorted()

### enumerate()

enumerate 意为枚举、列举。对于一个可迭代的对象，enumerate 将它变成一个索引序列，返回一个枚举类型的对象。

``````seq = ['one', 'two', 'three', 127]
s1 = list(enumerate(seq))
s2 = list(enumerate(seq, start=1))
print(s1)
print(s2)
``````
``````# 输出结果
[(0, 'one'), (1, 'two'), (2, 'three'), (3, 127)]
[(1, 'one'), (2, 'two'), (3, 'three'), (4, 127)]
``````

### filter()

``````filter(function, iterable)

# function -- 判断函数。
# iterable -- 可迭代对象。
``````

``````def is_odd(n):
return n % 2 == 1

newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(newlist)
``````
``````[1, 3, 5, 7, 9]
``````

### lambda

1. 将lambda函数赋值给一个变量，通过这个变量间接调用该lambda函数。
``````sum = lambda x, y: x + y
print(sum(1, 2))
``````
``````3
``````
1. 将lambda函数作为参数传递给其他函数，部分Python内置函数接收函数作为参数。
``````s = list(filter(lambda x: x%2,range(10)))
print(s)
# 此时lambda函数用于指定过滤列表元素的条件。
``````
``````[1, 3, 5, 7, 9]
``````
1. 将lambda函数作为其他函数的返回值，返回给调用者。
``````return lambda x, y: x+y
``````
1. 将 lambda 函数赋值给其他函数，从而将其他函数用该 lambda 函数替换。

1. 将if…else语句缩减为单一的条件表达式。
``````s = lambda x: "yes" if x == 1 else "no"

print(s(0))

print(s(1))
``````
``````no
yes
``````

### [i for i in range(1,10)] 列表解析

1. 列表解析式
``````l1 = [i * 2 for i in range(10)]
print(l1)
``````
``````[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
``````
1. 筛选条件
``````l1 = [i * 2 for i in range(10) if i*2 > 10]
print(l1)
``````
``````[12, 14, 16, 18]
``````
1. 嵌套循环
``````l1 = ['A', 'B', 'C']
l2 = ['1', '2', '3']
l3 = [(m, n) for m in l1 for n in l2]
print(l3)
``````
``````[('A', '1'), ('A', '2'), ('A', '3'), ('B', '1'), ('B', '2'), ('B', '3'), ('C', '1'), ('C', '2'), ('C', '3')]
``````
1. 字典解析式
``````a = {'language1': 'python', 'language2': 'java', 'language3': 'c'}
b = {key: value for key, value in a.items() if key == 'language1'}
print(b)
``````
``````{'language1': 'python'}
``````
1. 集合解析式
``````a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = {i for i in a if i > 5}
print(b)
``````
``````{6, 7, 8, 9, 10}
``````

### sorted()

sort 与 sorted 的区别
sort 是应用在 list 上的方法，sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作，无返回值，而内建函数 sorted 方法返回的是一个新的 list，而不是在原来的基础上进行的操作。

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

# 参数说明
# iterable -- 可迭代对象。
# key -- 主要是用来进行比较的元素，只有一个参数，具体的函数的参数就是取自于可迭代对象中，指定可迭代对象中的一个元素来进行排序。
# reverse -- 排序规则，reverse = True 降序 ， reverse = False 升序（默认）。
``````

``````print(sorted([5, 7, 6, 3, 4, 1, 2]))
``````
``````[1, 2, 3, 4, 5, 6, 7]
``````

``````print(sorted([36, 5, -12, 9, -21], key=abs))
``````
``````[5, 9, -12, -21, 36]
``````

``````print(sorted(['bob', 'about', 'Zoo', 'Credit']))
``````
``````['Credit', 'Zoo', 'about', 'bob']

# 默认情况下，对字符串排序，是按照ASCII的大小比较的，由于'Z' < 'a'，结果，大写字母Z会排在小写字母a的前面。
``````

key函数把字符串映射为忽略大小写排序

``````# 实际上就是先把字符串都变成大写（或者都变成小写），再比较。
``````['about', 'bob', 'Credit', 'Zoo']