Python 杂记

210 阅读3分钟

  目录

  1. 三元表达式
  2. 匿名函数
  3. reduce函数
  4. map函数
  5. filter函数
  6. 用字典映射代替switch,case语句
  •  三元表达式

类似于c语言或其他语言中的三元表达式,但其表示方法不同。

表示方法: 条件为真时返回的结果  if  条件判断  else  条件为假时返回的结果


x = 2
y = 1

r = x if x>y else y
print(r)


三元表达式的返回结果一般都是简短句,但如果想要用复合句,可以使用函数。


def x(a):
    return a*a

def y(a):
    return a**3

r = x(1) if 1>2 else y(2)   
print(r)


  • 匿名函数

 指一类无需定义标识符(函数名)的函数或子程序。

语法格式:lambda 参数 :表达式


salaries = {                        # 字典
    'eqon' : 3000,
    'alex' : 100,
    'wu' : 200
}

f = lambda k : salaries[k]          # 定义一个匿名函数,f接收返回值

print(f)                            # 输出f类型:为函数类型
print(f('eqon'))                    # 把‘eqon’传入函数里,并在字典里使用‘eqon’名得到值

# 输出3000


  • reduce函数

  作用:会对参数序列中元素进行积累运算(连续计算)。

  用法: 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数function(至少有两个参数),先对集合中的第1, 2个元素进行操作,得到的结果再于第三个数据用function函数进行运算,最后得到一个结果。


from functools import reduce                   # 引入reduce函数

list_x = [1, 2, 3, 4, 5, 6, 7]

r = reduce(lambda x, y : x+y, list_x)          # lambda函数必须要有两个参数,且计算结果赋给x
print(r)

r1 = reduce(lambda x, y : x+y, list_x, 10)     # 默认初始值为10
print(r1)

# 输出 28, 38


  • map函数

  map函数接收两个参数,一个是函数,一个是数据集合(链表,元组等)。map将传入的函数依次作用到序列的每个元素,并把结果作为新的值返回。(原数据集合与新数据集合具有一一映射关系)


list_x = [1, 2, 3, 4, 5, 6, 7]

def square(x):

    return x*x

r = map(square, list_x)

print(list(r))                # 返回值为列表,固要用list转换

# 输出[1, 4, 9, 16, 25, 36, 49]


  • filter函数

  filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回True或False,最后将返回True的元素放到新列表中。


list_x = [1, 0, 1, 0, 1]

r = filter(lambda x: True if x==1 else False, list_x)  

print(list(r))

# 输出[1, 1, 1]


  • 用字典映射代替switch,case语句

    由于字典里名和值具有一一对应的关系,类似与case语句中的值与表达式,顾可以用字典映射来代替switch,case语句。需要用到get函数。

    get函数:

    描述:get函数返回指定键的值,如果值不在字典中,则返回默认值。

    语法:字典 . get(key, default = None)

key为字典中要查找的键, default为如果指定的值不存在时, 返回该默认值。


day = input()
switcher = {                        # 建立一个字典
    0 : get_sunday
    1 : get_monday
    2 : get_tuesday
}

def get_sunday():                    
    return 'Sunday'

def get_monday():
    return 'Monday'

def get_tuesday():
    return 'Tuesday'

def get_default():
    return 'Unknow'

day_name = switcher.get(day, get_default)()
print(day_name)


  • 最后,感谢观众老爷的浏览,下面是卖小邪的微信号,希望有志同道合的码友能够加下,也更希望有业界大佬来指导小憨憨的编程之路!!!

  • 感谢感谢