目录
1.定义函数
定义一个函数,要求:有三个形参,可以不传递参数,可以传递一个参数,可以传递两个参数,可以传递三个参数
代码:
def func_args(arg1=None, arg2=None, arg3=None):
print(arg1, arg2, arg3)
func_args()
func_args(1)
func_args(1, 2)
func_args(1, 2, 3)
运行结果:
None None None
1 None None
1 2 None
1 2 3
定义一个函数,要求:有三个形参,第一个参数必须以位置参数传递,第二个和第三个参数必须以关键字参数传递
代码:
def func_args(arg1, /, *, arg2, arg3):
print(arg1, arg2, arg3)
func_args(2, arg2=4, arg3=1)
运行结果
2 4 1
2.lambda使用:
fruit_list = ['watermelon', 'apple', 'grape', 'mango', 'pineapple', 'blueberry', 'strawberry']
对fruit_list进行排序,要求:按照每个元素的最后一个字符进行排序,如果相等,按照倒数第二个字符排序
代码:
fruit_list = ['watermelon', 'apple', 'grape', 'mango', 'pineapple', 'blueberry', 'strawberry']
fruit_list.sort(key=lambda x: (x[-1], x[-2]))
print(fruit_list)
运行结果:
['apple', 'pineapple', 'grape', 'watermelon', 'mango', 'blueberry', 'strawberry']
3.递归函数的使用
lst = [
{'name': '小红', 'sub': [{'name': '小明', 'sub': [{'name': '小花'}]}, {'name': '小黑'}]}
]
这是一个嵌套列表,但是嵌套的可能有n层,如何运用递归函数得到列表中所有的name值,并且有层级关系的名字需要拼接起来,得到的结果是['小红', '小红/小明', '小红/小明/小花', '小红/小黑']
代码:
lst = [
{'name': '小红', 'sub': [{'name': '小明', 'sub': [{'name': '小花'}]}, {'name': '小黑'}]}
]
result_list = []
def get_name(name_list, prefix=None):
for item in name_list:
if prefix is not None:
data = prefix + item['name']
result_list.append(data)
else:
data = item['name']
result_list.append(data)
if item.get('sub') is not None:
sub_prefix = data + '/'
get_name(item['sub'], sub_prefix)
get_name(lst)
print(result_list)
运行结果:
['小红', '小红/小明', '小红/小明/小花', '小红/小黑']