3.22python学习笔记

三元表达式

# 是if,else的另外一种写法,合适在两个选择的情况下使用
def max(a,b):
      if a>b:
          return a
      else:
          return b
# 三元表达式的写法
max = a if a > b else b
  """
  三元表达式
      值1 if 条件 else 值2
  条件如果成立则使用值1(if前面的数据)
  条件如果不成立则使用值2(else后面的数据)
  三元表达式只用于二选一的情况 最好不要嵌套使用(语法不简洁)
 '''

各种生成式

用于快捷生成想要的数据类型,如列表,字典,集合。

1.列表生成式

现在想要生成一个1到10的列表
平常方法:
list1 = []
for i in range(11)
	list1.append(i)
print(list1)
#生成式写法
list2 = [i for i in range(11)]
#结果 [0,1,2,3,4,5,6,7,8,9,10]
还可以添加条件
list2 = [i for i in range(11) if i > 3]
#结果 [4,5,6,7,8,9,10]

2.字典生成式

  #定义两个列表(索引值必须相等)
  list1 = ['a','b','c','d']
  list2 = ['1','2','3','4']
  字典生成式
  dic = {list1[i]:list2[i] for i in range(len(list1))}
  print(dic)
  执行结果:
   {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
  #实现字典的key和value快速交换:
  dic1={'a':1,'b':2}
  dic2={v: k for k, v in dic1.items()}
  print(dic2)  #{1: 'a', 2: 'b'}

3.集合生成器

 a = {i for i in range(10)}
  print(a)
  #{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  a = {i for i in range(10) if i != 2}
  print(a)
  #{0, 1, 3, 4, 5, 6, 7, 8, 9}

匿名函数

#匿名函数不需要显示地定义函数名,使用【lambda + 参数 +表达式】的方式,即:lambda 形参:返回值
现在写两个数相乘的函数
def f(x,y):    
	return x*y
f(2,3) # 6
用匿名函数来写
func = lambda x,y:x*y
可以看到,上面我们把匿名函数对象赋给一个变量,只要直接调用该对象就可以使用匿名函数:
func(2,3) # 6
你也可以给匿名函数传入一个参数:
func_2 = lambda x:x^2 
func_2(3)  # 9
#优点:
#不用取名称,因为给函数取名是比较头疼的一件事,特别是函数比较多的时候
#可以直接在使用的地方定义,如果需要修改,直接找到修改即可,方便以后代码的维护工作
#语法结构简单,不用使用def 函数名(参数名):这种方式定义,直接使用lambda 参数:返回值 定义即可

常见重要内置函数

map映射函数

l1 = [11, 22, 33, 44, 55]
需求:元素全部自增10
方式1:列表生成式
方式2:内置函数
 def index(n):
     return n + 10
 res = map(index,l1)
 print(res)  # 迭代器(节省空间的 目前不用考虑)
 print(list(res))  # [21, 32, 43, 54, 65]
 res = map(lambda x: x + 10, l1)
 print(list(res))  # [21, 32, 43, 54, 65]

zip拉链

l1 = [11, 22, 33, 44]
l2 = ['jason','kevin','tony','oscar']
需求:将两个列表中的元素一一对应成对即可
res = zip(l1,l2)  # 结果是一个迭代器
print(res)  # 目前想看里面的数据 用list转换一下即可
print(list(res)) # [(11, 'jason'), (22, 'kevin'), (33, 'tony'), (44, 'oscar')]
'''zip可以整合多个数据集'''
 l1 = [11, 22, 33, 44]
 l2 = ['jason','kevin','tony','oscar']
 l3 = [1,2,3,4]
 l4 = [55,66,77,88]
 res = zip(l1,l2,l3,l4)
 print(list(res))
 不使用zip也可以
 res1 = [(l1[i],l2[i],l3[i],l4[i]) for i in range(len(l1))]
 print(res1)

filter过滤

方式1:列表生成式
方式2:内置函数
 def index(x):
     return x > 30
 res = filter(index,l1)
 print(list(res))  # [33, 44, 55, 66]
 res = filter(lambda x:x>30, l1)
 print(list(res))

reduce归总

'''以前是内置函数 现在是某个模块下面的子函数(后面讲)'''
from functools import reduce
l1 = [11, 22, 33]
'''需求:讲列表中所有的元素相加'''
# def index(x,y):
#     return x + y
# res = reduce(index,l1)
# print(res)  # 66
res = reduce(lambda x, y: x + y, l1)
print(res)  # 66
res = reduce(lambda x, y: x + y, l1, 100)
print(res)  # 166
"""掌握到能够语言表达出大致意思"""

一些小方法

1.abs()  获取绝对值(不考虑正负号)
     print(abs(-10)) #10
   
2.all()与any()
     l1 = [0, 0, 1, 0, True]
     print(all(l1))  # False  数据集中必须所有的元素对应的布尔值为True返回的结果才是True
     print(any(l1))  # True   数据集中只要所有的元素对应的布尔值有一个为True 返回的结果就是True

3.bin() oct() hex()  产生对应的进制数
	bin是2进制 oct是8进制 hex是16进制

4.bytes()  类型转换
     s = '你好啊 hello world!'
     print(s.encode('utf8'))  # b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a hello world!'
     print(bytes(s, 'utf8'))  # b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a hello world!'
    '''针对编码解码 可以使用关键字encode与decode  也可以使用bytes和str'''

5.callable()  判断当前对象是否可以加括号调用
     name = 'jason'
     def index():pass
     print(callable(name))  # False  变量名不能加括号调用
     print(callable(index))  # True  函数名可以加括号调用

6.chr()、ord()  字符与数字的对应转换
     print(chr(65))  # A  根据数字转字符  依据ASCII码
     print(ord('A'))  # 65  根据字符转数字  依据ASCII码

7.dir()  返回数据类型可以调用的内置方法(查看对象内部可调用的属性)
 	print(dir(123))
 	print(dir('jason'))

8.divmod() 返回整数和余数
     print(divmod(250,25))  # (10, 0)  第一个参数是整数部分 第二个是余数部分
     print(divmod(251,25))  # (10, 1)
     print(divmod(249,25))  # (9, 24)

9.enumerate()  枚举
 name_list = ['jason', 'kevin', 'oscar', 'tony']
 for name in name_list:
     print(name)
 for i,j in enumerate(name_list):
     print(i,j)  # i类似于是计数 默认从0开始
 for i,j in enumerate(name_list,start=1):
     print(i,j)  # 还可以控制起始位置

10.eval() exec()  识别字符串中的python代码  使用频率很低
 eval(res):只能识别简单逻辑的python代码
 exec(res):能够识别具有与一定逻辑的python代码

posted @ 2022-03-22 23:06  槐序八  阅读(46)  评论(0)    收藏  举报