python 列表生成式
列表生成式
列表生成式的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for或者if语句。列表表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表
# 去除偶数
hh=[
[1,2,3],
[4,5,6],
[7,8,9]
]
#从做往右读就行
print([item2 for item1 in hh for item2 in item1 if item2%2==0])
hhh=[]
for item1 in hh:
for item2 in item1:
if item2%2==0:
hhh.append(item2)
print(hhh)
lambda函数
匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序。
lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。
lambda [arg1 [,arg2,.....argn]]:expression
冒号左边是参数,右边是表达式
lambda x, y: x*y # 函数输入是x和y,输出是它们的积x*y
map() 函数
map(function, iterable, ...)
# 提供两个列表,将其相同索引位置的列表元素进行相加
map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
# 计算平方数
def square(x):
return x ** 2
#遍历列表中的每一个元素,并将其放入函数中生成一个新的迭代器
hh=map(square, [1,2,3,4,5])
print(hh)
for i in hh:
print(i)
reduce() 函数
reduce() 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
def add(x, y):
return x + y
reduce(add, [1, 3, 5, 7, 9])
from functools import reduce
def fn(x, y):
return x * 10 + y
reduce(fn, [1, 3, 5, 7, 9])
sorted() 函数
sorted() 函数对所有可迭代的对象进行
排序操作
。
sort 与 sorted 区别:
sort 是 list 的一个方法,而 sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
sorted(iterable[, cmp[, key[, reverse]]])
iterable ----> 可迭代对象。
cmp ----> 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key ----> 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse ----> 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
L=[('b',2),('a',1),('c',3),('d',4)]
# 利用参数 cmp 排序
sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))
# 结果:
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
#简单排序
a = [5,7,6,3,4,1,2]
b = sorted(a) # 使用sorted,保留原列表,不改变列表a的值
filter() 函数
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到迭代器中。
ewlist = filter(lambda x: x % 3 == 0, [1, 2, 3])
print(list(newlist))