序列总结与函数进阶

本文概述了Python中序列类型(列表、元组、字符串、集合和字典)的基本概念和操作,以及函数的高级特性,如多返回值、不同传参方式、缺省参数、不定长参数和匿名函数的使用。
摘要由CSDN通过智能技术生成

一、序列总结

对之前学习到的序列类型与相关操作做个简单总结:

序列总结
1.列表:list = [, , , ,]  可混装、可修改、可重复、有序
索引
list[下标]
查询
list.index(元素) → 返回下标
修改
list[下标] = 元素 → 修改索引元素
插入
list.insert(下标, 元素) → 原下标及后面的元素右移
追加
list.append(元素) → 指定元素追加至列表末尾
list.extend(序列) → 序列里的元素追加至列表末尾
删除
del list[下标] → 删除索引元素
list.pop(下标) → 删除指定下标的元素
list.remove(元素) → 删除首次匹配的指定元素
统计
list.count(元素) → 统计指定元素的数量
len(list) → 统计指定列表含有多少元素
清空
list.clear() → 将指定列表的元素全部删除

2.元组:tuple = (, , , ,)  可混装、不可修改、可重复、有序
索引
tuple[下标] 
查询
tuple.index(元素) → 返回下标
统计
tuple.count(元素) → 统计指定元素的数量
len(tuple) → 统计指定元组含有多少元素

3.字符串:string = "      "   不可混装、不可修改、可重复、有序
查询
string.index(字符) → 返回首次匹配到该字符对应的下标
替换
(此方法不能修改字符串本身,只能通过它得到一个新的字符串)
new_str = string.replace(被替字符, 新字符)
分割
(此方法同样无法改变字符串本身,而是得到了一个列表对象。)
new_str = string.split(分隔符) → 将字符串划分为多个字符串并存入列表中
规整
string.strip(空白符) → 按照传入的单个字符对字符串两端进行去除
统计
string.count(字符) → 统计指定字符的数量
len(string) → 统计指定元组含有多少元素

4.集合:set = {, , , ,}  部分混装、可修改、不重复、无序
增加
set.add(元素) → 将指定元素乱序添加至集合中
删除
set.remove(待删元素) → 删除指定元素
随机取元素
set.pop(元素) → 在集合中随机取出一个元素
清空
set.clear() → 得到空集
取差集
set1.difference(set2) → 得到两集合的差集
消除差集
set1.difference_update(set2) → 删除集合1内和集合2相同的元素,集合1被修改,集合2不变
合并集合
set1.union(set2)→ 得到合并的新集合,集合1和集合2不变
统计
len(set) → 统计集合内元素数量

5.字典dict = {: , : , : , : , }   部分混装、可修改、不重复、无序
增加
dict[新键] = 值 → 字典被修改,新增了元素
更新
dict[原键] = 值 → 字典被修改,元素被更新
删除
dict.pop(键) → 字典被修改,指定Key的数据被删除
清空
dict.clear() → 字典被修改,元素被清空
获取全部key
dict.keys() → 得到字典中的全部Key
统计
len(dict) → 得到字典内键值对的数量

性质概括:

一些通用功能:


★★★切片:从一个序列中,取出一个子序列
切片方式:序列[起始下标:结束下标:步长]  
①区间左闭右开
②[:]下标为空表示默认从头取到尾
③步长N表示,每次跳过N-1个元素
④步长为1可以省略不写

补充:字符串比较

根据ASCII码表,字符串是按位比较,也就是一位位进行对比,只要有一位大,那么整体就大

二、函数进阶

1.多返回值

如果一个函数如些两个return,那么运行时只会执行第一个return,原因是因为return可以退出当前函数, 导致return下方的代码不执行。

而如果需要通过一个函数得到多个返回值,则按照返回值的顺序,对应顺序的多个变量接收即可:

# 多个返回值
def more_return():
    return 1, 2


x, y = more_return()
print(x, y)

# 输出:1 2

2.多种传参方式

①位置参数:调用函数时根据函数定义的参数位置来传递参数

# 位置参数
def user_info(name, age, gender):
    print(f"您的信息是{name}, {age}, {gender}")


user_info('Frank', 23, 'male')

#输出:您的信息是Frank, 23, male

其中,传递的参数和定义的参数的顺序及个数必须一致。

②关键字参数:函数调用时通过“键=值”形式传递参数

(让函数更加清晰、容易使用,同时也清除了参数的顺序需求)

# 关键字参数
def user2_info(name, age, gender):
    print(f"您的信息是{name}, {age}, {gender}")


user2_info(name="frank", age=23, gender="male")
user2_info(age=23, gender="male", name="frank")
user2_info("frank", age=23, gender="male")


"""
输出:
您的信息是Frank, 23, male
您的信息是frank, 23, male
您的信息是frank, 23, male
您的信息是frank, 23, male
"""

函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序

③缺省参数:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值。

当调用函数时没有传递参数, 就会使用默认是用缺省参数对应的值。

(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)

# 缺省参数
def user3_info(name, age, gender='male'):
    print(f"您的信息是{name}, {age}, {gender}")


user3_info('tom', 20)
user3_info('rose', 18, 'female')

"""
输出:
您的信息是tom, 20, male
您的信息是rose, 18, female
"""

函数调用时,如果为缺省参数传值则修改默认参数值, 否则使用这个默认值

④不定长参数:不定长参数也叫可变参数.

用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。

不定长参数的类型: 位置传递和关键字传递

位置传递

# 不定长参数
def user4_info(*args):
    print(args)


user4_info('tom')
user4_info('tom', 18)

"""
输出:
('tom',)
('tom', 18)
"""

传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递

关键字传递

def user5_info(**kwargs):
    print(kwargs)


user5_info(name='tom', age=18, id=60)

# 输出:{'name': 'tom', 'age': 18, 'id': 60}

参数是“键=值”形式的形式的情况下, 所有的“键=值”都会被kwargs接受, 同时会根据“键=值”组成字典。

3.匿名函数

①函数作为参数传递

函数本身是可以作为参数传入另一个函数中进行使用的,其作用在于传入计算逻辑,而非传入数据。

# 函数作为参数
def compute(x, y):
    return x + y


def fun(compute):
    result = compute(1, 2)
    print(result)


fun(compute)


# 输出: 3

②lambda匿名函数

函数的定义中,def关键字可以定义带有名称的函数,lambda关键字可以定义无名称的匿名函数;有名称的函数,可以基于名称重复使用。 无名称的匿名函数,只可临时使用一次。

方式如下:

lambda 传入参数:函数体(一行代码)

# lambda匿名函数
numbers = [1, 2, 3, 4, 5]
doubled_numbers = list(map(lambda n: n * 2, numbers))
print(doubled_numbers)  

# 输出: [2, 4, 6, 8, 10]

(使用def和使用lambda,定义的函数功能完全一致,只是lambda关键字定义的函数是匿名的,无法二次使用。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值