python随笔学习

admin2024-04-03  0

python里面的高阶函数:

在Python中,高阶函数是指能够接收其他函数作为参数,或者将函数作为返回值的函数。这种特性使得函数更加灵活,可以用来构建更复杂的功能。

Python中常见的高阶函数:

  • map(function, iterable):将一个函数应用到可迭代对象的每个元素上,并返回一个迭代器。
  • filter(function, iterable):过滤可迭代对象中的元素,返回满足条件的元素组成的迭代器。
  • sorted(iterable, key=function, reverse=False):对可迭代对象进行排序,可以指定排序方式和排序键。
  • reduce(function, iterable, initializer):对可迭代对象中的元素进行累积操作。
  • functools.partial(func, *args, **kwargs):部分应用一个函数,固定部分参数,返回一个新的函数。

可变参数:

可变参数 * 在函数定义中通常用来指示接受可变数量的位置参数。这些位置参数会被收集到一个元组中。

可变参数 ** 也就是两个* ,表示这个参数是一个可变长度的关键字参数,它可以接收任意多个关键字参数,并将这些参数存放在一个字典中。 

判断:

调用函数时传递的实参个数必须与函数形参个数相等才行。(X 错误的)

Python中,函数的实际参数个数可以与函数的形式参数个数不同。Python提供了灵活的参数传递方式,可以通过可变长度参数来接收不定数量的参数。

eval:

eval是个内置函数 用于执行一个字符串表达式 并返回运算后的结果,他可以接受一个字符串作为参数

result = eval("3 + 4 * 2")
print(result)  # 输出 11

lambda表达式定义的匿名函数:

 lambda:是一个关键字,表示创建一个匿名函数

my_list = [(1, 'a'), (2, 'b'), (3, 'c')]
result = list(map(lambda e: e[1], my_list))
print(result)  # 输出 ['a', 'b', 'c']

元组(  ()  ): tuple

当元组里面只有一个元素的时候 需要在末尾加上 , 和普通变量进行区分,如果不使用逗号来表示元组,Python会将其解释为一个普通的数值或变量。为了避免这种歧义,Python允许在元组中的单个元素后面添加一个逗号。

列表里的index:

list里面的index(num) 表示的是 list里面第一个num的下标  注意下标是从0开始的

x = [3, 5, 3, 7]
for i in x:
    print(x.index(i))
# 输出的结果是
# 0
# 1
# 0
# 3

要是这个num不存在list里面 就会抛出异常

x = [3, 5, 3, 7]
print(x.index(100))

 print(x.index(100))
ValueError: 100 is not in list

yield

yield翻译为 屈服 

yield来暂停函数的执行并将值传递给调用方

如何理解Python中的yield用法? - 知乎 (zhihu.com) 

def natural_numbers():
    n = 1
    while True:
        yield n
        n += 1

gen = natural_numbers()
print(next(gen))  # 输出 1
print(next(gen))  # 输出 2
print(next(gen))  # 输出 3
def even_numbers(maximum):
    n = 0
    while n <= maximum:
        yield n
        n += 2

# 使用生成器生成偶数序列
gen = even_numbers(10)
for num in gen:
    print(num)
    
# 输出的结果是 0  2  4  6  8  10
def fibonacci():
    a, b = 0, 1
    t = 0
    while t <= 10:
        yield a
        a, b = b, a + b
        t += 1

# 使用生成器生成斐波那契数列
gen = fibonacci()

for _ in range(10):
    print(next(gen))

# for i in gen:
#     print(i)

# 二者的输出结果是一样的
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!