1、公共方法
运算符
+: 对数据进行合并(字符串,列表,元组)
*: 对数据进行复制 (字符串,列表, 元组)
# + 运算符
# 字符串
str = "hello"
print(str + " world") # hello world
# 列表
list = ["first", "second"]
print(list + ["third"]) # ['first', 'second', 'third']
# 元组
tp = ("first", )
print(tp + ("second",)) # ('first', 'second')
# * 运算符
str1 = 'ok'
print(str1 * 3)
list1 = ['first']
print(list1 * 3)
tp = ('first',)
print(tp * 3)
判断操作符
in: 判断元素是否存在(字符串,列表, 元组,字典,集合)
not in: 判断元素是否不存在(字符串,列表,元组,字典, 集合)
str="this is test"
list = ["first", "second", "third", "fourth"]
tp = ("first", "second", "third", "fourth")
set={"first", "second", "third"}
map = {"name": "test", "age": 12}
# 字符串
print("is" in str)
print("ok" not in str)
# 列表
print("first" in list)
print("yes" not in list)
# 元组
print("first" in tp)
print("yes" not in tp)
# 集合
print("first" in set)
print("yes" not in set)
# 字典
print("name" in map)
print("sex" not in map)
公共函数
len(): 计算容器中元素的个数
del 或 del(): 删除
max(): 返回容器中元素的最大值
min(): 返回容器中元素的最小值
range(start, end, step): 生成从start 到end的数字, 步长为step, 供for循环使用
enumerate(可遍历对象,start=0): 函数用于将一个可遍历的数据对象(如列表, 元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用于for循环当中, start表示开始的位置, start可省略,默认从0开始
str="this is test"
list = ["first", "second", "third", "fourth"]
tp = ("first", "second", "third", "fourth")
set={"first", "second", "third"}
map = {"name": "test", "age": 12}
print(len(str), len(list), len(tp), len(set), len(map))
# 删除操作
del str, list, map["name"]
print(str, list, map)
# 求最大值
print(max(1,2,3,4,5), max([5,6,7,8,9]))
# 求最小值
print(min(1,2,3,4,5), min([5,6,7,8,9]))
# 具体的示例见循环
print(type(range(1, 10, 1))) # <class 'range'>
data=enumerate('are you ok???')
print(data) # <enumerate object at 0x0000027D505386C0>
print(type(data)) # <class 'enumerate'>
for key, val in data:
print(key, val)
容器的转换
tuple(): 把某个序列转换成数组
list(): 把某个序列转成列表
set(): 把某个序列转成集合
注意:把列表或者元组转成集合的时候具有去重的功能
2、推导式
列表推导式的实现(注意:列表推导式的执行顺序是先执行前面再执行后面)
# 常用的列表推导式
countList = [i for i in range(10)]
print(countList) # 输出 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
countList1 = [i * 2 for i in (1, 2, 3, 4)]
print(countList1) # [2, 4, 6, 8]
# 添加过滤器的列表推导式
countList2 = [i for i in range(10) if i > 5]
print(countList2) # [6, 7, 8, 9]
# 多重循环推导式
countList3 = [(i, j) for i in (1, 2, 3) for j in (4, 5, 6)]
print(countList3) # [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
# 带有else的列表推导式
countList3 = [x if x > 5 else 0 for x in range(10)]
print(countList3) # [0, 0, 0, 0, 0, 0, 6, 7, 8, 9]
# 注意如果有else需要写到前面,如果没有else那么if可以写后面
countList4 = [x for x in range(10) if x > 3 and x < 6]
print(countList4) # [4, 5]
# 生成矩阵
countList5 = [[y for x in range(3)] for y in range(3)]
print(countList5) # [[0, 0, 0], [1, 1, 1], [2, 2, 2]]
字典推导式的实现
# 生成一个字典
dict1 = {i: i ** 2 for i in range(5)}
print(dict1) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# 把两个列表合并成一个字典
list1 = ["name", "age", "gender"]
list2 = ["aaa", 12, "man"]
dict2 = {list1[i]: list2[i] for i in range(len(list1))}
print(dict2) # {'name': 'aaa', 'age': 12, 'gender': 'man'}
# 提取字典中的目标数据
counts = {'MBP': 268, 'HP': 125, 'XIAOMI': 300, 'DELL': 189, 'Lenovo': 199, 'acer': 78}
dict3={key: value for key, value in counts.items() if value > 200}
print(dict3) # {'MBP': 268, 'XIAOMI': 300}
集合推导式的实现
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
set1 = {x if x % 2 == 0 else 1 for x in list}
print(set1) # {1, 2, 4, 6, 8}
# 注意:集体具有去重的功能
3、函数
快速入门
def getListByNum(num):
return [x for x in range(num)]
print(getListByNum(3)) # [0, 1, 2]
print(getListByNum(10)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
函数文档
查看函数的说明文档 help(***)
def getListByNum(num):
'''
根据一个数值返回一个列表
:param num:
:return: 列表
'''
return [x for x in range(num)]
help(getListByNum) # 会输出上成的注释,即函数的说明文档
作用域
在函数中,通常来讲使用的是函数内部的变量,如果函数内部没有定义,那么会自动访问到外部的变量,但是如果有重名,或者需要在函数内部对外部变量进行更改,那么就需要使用到关键字 global
count = 12
def testFunc():
global count
print(count)
count = 10
testFunc()
print(count)
通过以上操作就会在函数内部更改了部变量的值(通常不建议在函数内部去更改外部变量的值,以上只是演示)
函数的多反回值
def testFunc():
return 1,2,3
print(testFunc()) # (1, 2, 3)
如果存在上面的多返回值的情况,返回的数据类型是元组
函数传参
通常的函数调用采用的是位置传参,但python中还有一种叫关键字传参如下例子
def getUserInfo(name, age, gender='男'):
print(f"名字:{name}, 年龄:{age}, 性别:{gender}")
getUserInfo('小明', 12, '男') # 以位置参数的方式进行调用
getUserInfo('小红', gender='女', age=13) # 以关键字的传参方式进行传参
getUserInfo('小陈', age=11) # 使用默认参数
注意:如果有位置传参与关键字传参一起使用,那么位置传参必需在前面,否则会报错
函数的不定长参数
不定长参数分成两种,一种是包裹位置参数, 另一种是包裹关键字参数
包裹位置参数
def firstFn (*args):
print(f'参数是({",".join(args)}), 类型是{type(args)}')
firstFn('a', 'b') # 参数是(a,b), 类型是<class 'tuple'>
包裹关键字
def secondFn(**kwargs):
print(kwargs)
secondFn(name="aaa", age=12) # {'name': 'aaa', 'age': 12}
注意,前都接收的是元组,后者接收到的是字典
4、拆包和交换变量的值
list = ["first", "second", "third"]
a, *b = list
print(a, b) # 输出 first ['second', 'third']
obj = {"name": "aaa", "age": 12, "sex": "man"}
aa, *bb = obj
print(aa, bb) # name ['age', 'sex']
set1 = {'aaa', 'bbb'}
cc, dd = set1
print(cc,dd) # bbb aaa
如果是两个变量的值进行替换,传统的方法是再定义一个变量进行中转,但是python可以用以下方法简便处理
list=["first", "second"]
a,b=list
print(a, b) # first second
a,b=b,a
print(a, b) # second first