Python知识点

本文介绍了Python中的lambda匿名函数,展示了如何使用它们处理多个参数和返回单个表达式值。接着,详细解释了sorted函数的功能,包括其参数和用法,并通过例子演示了如何对列表按元素长度进行排序。此外,还探讨了Python切片的用法,包括正序和倒序切片,并给出了示例。最后,提到了序列解包和生成器的概念,强调了yield语句的作用。
摘要由CSDN通过智能技术生成

Python知识点

python中的lambda函数与sorted函数

lambda函数

匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序。
lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值

  1. 例1:传入多个参数的lambda函数
def sum(x,y):
      return x+y

用lambda来实现:

p = lambda x,y:x+y
print(p(4,6))
传入一个参数的lambda函数
a=lambda x:x*x
print(a(3))
例3:多个参数的lambda形式:
a = lambda x,y,z:(x+8)*y-z
print(a(5,6,8))
sorted函数

sorted函数就比sort函数要强大许多了,sort只能对列表进行排序,sorted可以对所有可迭代类型进行排序,并且返回新的已排序的列表。语法如下:

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

iterable – 可迭代对象。

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

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

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

一共可接受4个参数,含义分别如下:
1.可迭代类型,例如字典、列表、
2.比较函数
3.可迭代类型中某个属性,对给定元素的每一项进行排序
4.降序或升序

例题
sorted([111, 2, 33], key=lambda x: len(str(x)))
题意:给定列表[111, 2, 33],将其中的元素按照字符串长度的升序进行排列
结果为:[2, 33, 111]

python切片

切片的操作参数详解

【start: end: step】
切片的start 和end 中指的是索引,step指的是间隔。

    1.  start和end可以是任意值,即可以超出下标 ,超出下标后不报错,切的值为空。
    2. 切值返回的类型同样受到原值的影响。
       即如果在tuple上进行,返回的切片内容由()  进行包围。
123
list1=[0,1,2,3,4,5,6]

one=list1[ 8:100]
print("切片超出下标范围取值为:%s"%one)  切片超出下标范围取值为:[]

12345

进行第一个切片操作

    1.  [0,1] 切的是第一个元素,和其他一样包含头部,不包含尾部。
    2. 在这个切片操作过程中,step为空时,代表这个参数值为1,同时它有2层含义。
        1.切片的过程为正序,需要满足start<end
        2.切片的间隔为1,顺序执行。
1234
list1=[0,1,2,3,4,5,6]

one=list1[ 0:1]
print("切片第一个元素【0:1】%s"%one)  #切片第一个元素【0:1】[0]
1234

什么是正序切片?

 切片的正序需满足start的位置在end位置的左边。
 下面是除了正数到正数外的满足正序的其他方式切片。
12
list1=[0,1,2,3,4,5,6]

two=list1[3:-1]
print("切片正序实现从正数数到负数的切%s"%two)
#切片从正数到负数的切[3,4, 5]
12345
list1=[0,1,2,3,4,5,6]

two=list1[-3:-1]
print("切片正序实现从负数到负数的切%s"%two)
#切片从负数到负数的切[4, 5]
12345
list1=[0,1,2,3,4,5,6]

two=list1[-6:5]
print("切片正序实现从负数到负数的切%s"%two)
#切片从正数到负数的切[1, 2, 3, 4]
12345

什么是倒序切片?

 切片的倒序需满足start的位置在end位置的右边。
 留给大家一个练习,怎样进行一个倒序的切片。
12
​```python
   
 补充倒序切片:   
ll=[0,1,2,3,4,5,6,7,8,9]
print(ll[-1:3])      结果 :[]       
print(ll[-1:3:-1])    结果:[9, 8, 7, 6, 5, 4]
print(ll[-1:3:-2])    结果:[9, 7, 5]

     
12345678910

**

解析: 首先从第一个参数和第二个参数来说,他们分别代表可迭代对象的右边界和左边界。对应列表中的数字9,4;
关键是第三个参数step。必须要求这个数为负数,然后从右到左开始进行取值。如果为正数时,取到的是一个空列表

Python中[ : n]、[m : ]、[-1]、[:-1]、[::-1]、[2::-1]和[1:]的含义

[m : ] 代表列表中的第m+1项到最后一项

[ : n] 代表列表中的第一项到第n项

b = a[i:j] 表示复制a[i]到a[j-1],以生成新的list对象

a = [0,1,2,3,4,5,6,7,8,9]
b = a[1:3] # [1,2]
当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
当i,j都缺省时,a[:]就相当于完整复制一份a

b = a[i:j:s]表示:i,j与上面的一样,但s表示步进,缺省为1.
所以a[i:j:1]相当于a[i:j]
当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍,即倒序。

import numpy as np
a=[1,2,3.4,5]
print(a)
[ 1 2 3 4 5 ]

print(a**[-1]**) 取最后一个元素
结果:[5]

print(a**[:-1]**) 除了最后一个取全部
结果:[ 1 2 3 4 ]

print(a**[::-1]**) 取从后向前(相反)的元素
结果:[ 5 4 3 2 1 ]

print(a**[2::-1]**) 取从下标为2的元素翻转读取
结果:[ 3 2 1 ]

print(a**[1:]**) 取第二个到最后一个元素
结果:[2 3 4 5]

例题
fruits = ['apple', 'banana', 'pear']
print(fruits[-1:])
print(fruits[:-1])
print(fruits[-1:-1])
结果为:['pear']
       ['apple', 'banana']
       []

序列解包

生成器

包含yield语句的函数可以用来创建生成器对象,这样的函数也称生成器函数。
yield语句与return语句的作用相似,都是用来从函数中返回值。与return语句不同的是,return语句一旦执行会立刻结束函数的运行,而每次执行到yield语句并返回一个值之后会暂停或挂起后面代码的执行,下次通过生成器对象的__next__()方法、内置函数next()、for循环遍历生成器对象元素或其他方式显式“索要”数据时恢复执行。
也就是说在调用函数时,只会从yield开始执行,yield前的函数只会执行一次,相当于对变量进行断点调试
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值