python内置函数

reduce

reduce() 是 functools 模块下面的一个函数,接收两个参数,一个是函数对象,一个是可迭代对象(比如list), reduce每次会把迭代对象中的下一个元素作用在函数上做累积计算,最后得到一个值。

reduce用于收敛列表

def add(a, b):
    result = a + b
    print(f"{a} + {b} = {result}")
    return result

from functools import reduce

result = reduce(add, [1, 2, 3, 4])
print("结果:", result)

结合lambda,可大大减少代码量

result = reduce(lambda a,b:a+b, [1, 2, 3, 4])
print("结果:", result)

map

map是一个与reduce函数对应的函数,Google的map/reduce框架的思想其实就是从这两个函数借鉴而来的。map函数用于把一个列表通过函数处理,映射成一个新的列表。例如给列表的每个元素做平方,将列表元素转换成字符串,得到一个新的列表。

result = map(lambda x: str(x), [1, 2, 3, 4])
print(list(result))
result = map(lambda x: x * x, [1, 2, 3, 4]))
print(list(result))

split

split 接收一个参数,用于将字符串切割成列表,比如一段英文字符串按照空格切割就可以统计出单词的个数。

words = "python is the best programming language"
words = words.split(" ")
print(words)

enumerate

enumerate 函数用于迭代列表等可迭代对象,它的使用场景一般出现在你需要获取列表的下标位置时,直接用for循环去迭代列表时,是拿不到元素下标位置的,而 enumerate 就可以获取。

words = ['python', 'is', 'the', 'best', 'programming', 'language']
for index, w in enumerate(words):
    print(index, w)

getattr

getattr() 返回对象属性对应的值,接受两个参数,第一个是对象,第二个是属性名,这个函数通常用户动态或者某个对象下面的某些属性的值。

class Foo:
    def __init__(self):
        self.a = 10

foo = Foo()

a = getattr(foo, "a")
print(a)

直接 foo.a 不就可以获取a属性的值了吗?正常情况是这样没错,如果是你在不知道什么情况下要获取什么属性的值时,这时候getattr就可以派上用场了。在一些框架级的代码中会经常用到。

slice

slice 是一个切片函数,就是通常使用的切片操作

s = [1,2,3,4]
s[1:3] # 获取列表s中第1到第3之间的元素组成的子列表
s[slice(1, 3)] # 与上一行相同,这是完整写法

sorted

sorted 用于将列表等可迭代对象进行排序,它不会改变原列表的顺序,而是返回一个新的列表。默认按照升序排列

nums = [4, 5, 6, 3, 1]
print(sorted(nums)) # [1, 3, 4, 5, 6]

如果想要降序排列,则需要指定第二个参数:reverse=True

nums = [4, 5, 6, 3, 1]
print(sorted(nums, reverse=True))  # [6, 5, 4, 3, 1]

自定义排序因子函数,排列复杂元素(对象)

class Student:
    def __init__(self, age):
        self.age = age

    def __str__(self):
        return f"Student({self.age})"

    
def my_sort_key(Student:s):
    return s.age

s1 = Student(12)
s2 = Student(2)
s3 = Student(30)

new_list = (sorted([s1, s2, s3], key=my_sort_key))
for i in new_list:
    print(i)

format

format 函数曾经字符串格式化最常用的函数,使用也是非常简单,但自从f字符串出现之后,format 的功能逐渐被取代,但是3.6之前还是可以常见到该函数的应用场景。

s = "{} is first name"
print(s.format("liu"))

如果需要占位符比较多搞不清次序的话,可以给每个占位符一个名字,这样就不拍对不上位置了

s = "{first_name} is first name"
print(s.format(first_name="liu"))

join

join 也是比较常用的一个内置函数,它可以将列表对象用指定的字符作为元素之间的连接,转换为字符串。

words = ['python', 'is', 'the', 'best', 'programming', 'language']
print(" ".join(words)) # 用空格连接 python is the best programming language
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值