day9-推导式和函数
推导式
推导式是用来快速方便的产生列表或者字典的表达式
-
列表推导式
-
基本结构
[表达式 for 变量 in 序列]
产生一个新的列表,列表中的元素就是每次循环对应的表达式的结果
list1 = [10 for x in range(3)] print(list1) # [10, 10, 10] list2 = [2*x for x in range(1, 4)] print(list2) # [2, 4, 6]
-
条件结构
[表达式 for 变量 in 序列 if 条件语句]
-
多重循环结构1:
[表达式 for 变量1 in 序列1 for 变量2 in 序列2]
多重循环结构2:
[表达式 for 变量1 in 序列1 for 变量2 in 序列2 if 条件语句]
-
-
集合推导式
将列表推导式的[]变成{}
-
元组和字典推导式
元组 - 将列表推导式的[]变成tuple()
字典 - (表达式是键值对形式)将列表推导式的[]变成{};(表达式是有且只有2个元素的序列的时候)将列表推导式的[]变成dict()
# 通过字典推导式交换一个字典的键和值 dic = {'a': 10, 'b': 20, 'c': 30} dic1 = {dic[key]: key for key in dic}
函数
-
认识函数
-
什么是函数
函数就是对实现某一特定功能的代码的封装。
-
函数的分类(谁定义的函数)
系统函数:python已经定义好,程序员可以直接使用的函数。例如:print、input、type、chr、ord、id、max、min、sum、sored等
自定义函数:由程序员自己定义,程序员可以自己使用或者给别人使用的函数
-
-
定义函数
语法:def 函数名(形参列表):
函数说明文档
函数体
说明:
-
def - 关键字;固定写法
-
函数名 - 程序员自己命名;要求与规范和变量命名要求与规范一致
-
(): - 固定写法
-
形参列表 - 以’变量名1, 变量名2, 变量名3, …'的形式存在
形参的作用是将函数外部的数据传递到函数里面(如果实现函数的功能需要提供外部数据,那么这个函数就需要形参)
-
函数说明文档 - 函数的说明书;本质就是用""""""引起来的注释
-
函数体 - 和def保持一个缩进的一条或多条语句
实现函数功能的代码块
(重点)注意:定义函数的时候不会执行函数体
-
-
调用函数
语法:
函数名(实参列表)
说明:
-
函数名 - 需要使用的已经定义好的函数的函数名
-
() - 固定写法
-
实参列表 - 以’数据1, 数据2, 数据3, …'的形式存在;
实参就是需要从函数外部传递到函数内部使用的具体的数据
-
# 示例1:定义一个函数求任意两个数字的和
def sum1(num1, num2):
"""
求两个数字的和 - (函数功能说明区)
:param num1: 提供第一个数字
:param num2: 提供第二个数字
:return: None - (返回值说明)
"""
print(num1 + num2)
# 练习1:定义一个函数,求一个数的阶乘:N! = 1*2*3*4*...*N
def factorial(num1):
pro = 1
for x in range(1, num1 + 1):
pro *= x
print(pro)
factorial(4)
# 练习2:写一个函数将两个字符串交叉合并
'abc'、'123' -> a1b2c3
'abc'、'12345' -> a1b2c345
'abcdef'、'123' -> a1b2c3def
def merge(str1, str2):
str3 = ''
len1 = len(str1)
len2 = len(str2)
# 先交叉拼接公共部分
for index in range(min(len1, len2)):
str3 += str1[index] + str2[index]
# 再确定尾部
if len1 > len2:
str3 += str1[len2:]
else:
str3 += str2[len1:]
print(str3)
merge('abcde', '123')