python单行条件语句_Python内置函数和高阶函数(map,filter,reduce, sorted,enumerate, zip,单行条件语句 )...

1. map 的用法:

map()函数接收两个参数,一个是函数,一个是序列。

map将传入的函数依次作用到序列的每个元素,并把结果作为新的对象返回,返回值是一个可迭代对象,可以用list()方法将其转为一个列表。

def f(x):

return x*x

print(list(map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])))

输出:[1, 4, 9, 16, 25, 36, 49, 64, 81]

2.filter的用法

Python内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。

和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。True保留,False丢弃

def f(x):

return x%2 == 1

print(list(filter(f, [1, 2, 3, 4, 5, 6, 7])))

输出:[1, 3, 5, 7]

3. reduce的用法

reduce把一个函数作用在一个序列[x1, x2, x3…]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

reduce函数不是内置函数,而是在模块functools中的函数,故需要导入。但用处很多

from functools import reduce

def add(x, y):

return x + y

print(reduce(add, [1, 3, 5, 7, 9]))

输出:25

# 将[1, 3, 4, 6, 7, 1, 0]生成1346710

def fn(x, y):

return x * 10 + y

print(reduce(fn, [1, 3, 4, 6, 7, 1, 0]))

输出: 1346710

# 字符串转数字

def fn(x, y):

return x * 10 + y

def f(x):

return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[x]

# reduce和map一起用

print(reduce(fn, map(f, '135874')))

输出:135874

4. sorted 的用法

sorted()函数也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。

语法: sorted(iterable, cmp=None, key=None, reverse=False)

cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。

key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

print(sorted([9, 23, 5, 34, 10], reverse=False))

输出: [5, 9, 10, 23, 34]

5. enumerate的用法

如果你需要遍历可迭代的对象,又需要获取它的下标,可以用enumerate

a = ['a', 'b', 'c', 'd']

for idx, value in enumerate(a):

print(idx, value)

输出:

0 a

1 b

2 c

3 d

6. zip的用法

zip接收多个迭代器参数,取相同下标的元素组合成一个新的迭代器;

zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。

b = ['a', 'b', 'c', 'd']

c = ['e', 'f','g']

d = ['h', 'i', 'j', 'k']

for i in zip(b, c, d):

print(i)

输出:

('a', 'e', 'h')

('b', 'f', 'i')

('c', 'g', 'j')

print(list(zip(b, c, d)))

输出:

[('a', 'e', 'h'), ('b', 'f', 'i'), ('c', 'g', 'j')]

7. 单行条件语句

如果我们使用条件语句,那么最可能写成下面这个样子:

x = int(input())

if x >= 10:

print("Horse")

elif 1 < x < 10:

print("Duck")

else:

print("Baguette")

但其实我们也可以把所有条件都写在 print 函数内,即上面 7 行代码可以等价写成如下一行:

print("Horse" if x >= 10 else "Duck" if 1 < x < 10 else "Baguette")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值