目录
元组:
元组的特点:
代码:
字符串:
代码:
输出的结果是:
总结:
(序列)的切片:
对字符串的切片代码:
输出的结果:
对list进行切片
输出的结果:
对tuple进行切片(倒着) :
运行的结果:
上的代码也可以更改为:
集合:{}
代码:
运行的结果是:
字典:
用法是:
字典的常用操作:
代码:
运行的结果:
数据容器的分类:
数据容器的通用操作
类型转换: 容器转列表:
代码:
输出的结果:
类型转换:容器转元组:
容器的排序:
代码:
运行结果:
小结:编辑
函数进阶:
函数的多返回值:
代码:
函数的多种传参方式:
位置参数 - 默认使用形式
代码:
关键字参数
代码:
缺省参数(默认值)
代码:
不定长参数
位置传参(*args)
代码:
运行的结果:
关键字传递:
代码:
运行的结果:
总结: 编辑
函数作为参数传递
代码:
运行的结果:
匿名函数:
代码:
元组和list最大的区别就是元组是不可以被修改的, 而list是可以被修改的,其里面的方法和list没多大区别
# 定义元组
a = (1, 2, 3, 4, "code") # 是不可被修改的
for i in a:
print(i, end=" ")
# 定义空的元组
a2 = tuple() # 或者直接写 ()
# 注意 要是只有一个元素的话 一个元素的后面要加个 逗号
a3 = (1,)
print(type(a3))
# 元组的嵌套
a4 = ((1, 2, 3), (4, 5, 6))
print(a4[1][1]) # 输出的结果是 5
# index(元素)
a5 = (1, 2, 3)
print(f"1在元组里面的位置是: {a3.index(1)}")
# 遍历元组
i = 0
while i < len(a5):
print(a5[i], end=" ")
i += 1
print() # 换行
for i in range(0, len(a5)):
print(a5[i], end=" ")
和其他语言里面的字符串几乎是一样的,是不可以被修改的
s = "Find You. Code change the world"
# 通过下标索引进行取值
for i in range(len(s)):
print(s[i], end="")
print()
# index方法 可以查找字符串也可以操作字符
print(s.index("You")) # 这个返回的也就是You中的Y的位置
# 字符串的分割 和java里面的一样 返回的是数组
print(s.split(" ")) # 输出的结果是 ['Find', 'You.', 'Code', 'change', 'the', 'world']
# 替换
new_s = s.replace("You", "me")
print(new_s) # 输出的结果是Find me. Code change the world
print(s) # s还是没有改变的
# 字符串的规整操作
t = "123对吗?不对是23212"
new_t = t.strip("12") # 只要满足12其中的一个我就一直删除 直到不满足我就立刻停下来
print(f"'{t}'去除前后的12后输出的结果是: '{new_t}'") # 输出的结果是3对吗?不对是23
注意:结束下标是不包含的 也就是前闭后开
起始下标不写的话,默认从头开始,结束下标不写的话,默认截取到末尾(包括)
s = "Find You."
# 我想要把You.给截取出来
start = s.index("You.")
end = start + len("You.")
new_s = s[start:end:1] # 步长不写默认是1
print(new_s)
对my_list进行切片,步长是2,也就是截取一个跳一个
# 对list进行切片
my_list = [1, 2, 3, 4, 5, 6]
# 我想把里面的偶数给切出来
my_new_list = my_list[1:len(my_list):2]
print(my_new_list)
# 对tuple进行切片 倒着切
my_tuple = (1, 2, 3, 4, 5, 6)
my_new_tuple = my_tuple[-1:-1 * len(my_tuple) - 1:-1]
print(my_new_tuple)
注意:要是倒着切的话,开始的位置和结束的位置也要反向标
# 对tuple进行切片 倒着切
my_tuple = (1, 2, 3, 4, 5, 6)
my_new_tuple = my_tuple[::-1]
print(my_new_tuple)
输出的结果是一样的
和其他容器最大的区别就是自带去重 也就是java里面的set,是无序的
# 不重复 是无序的
my_set = {"Find", "You.", "You."}
print(my_set)
# 定义空集合
my_set2 = set()
print(f"my_set2的类型是: {type(my_set2)}")
# 添加元素
my_set2.add(1)
my_set2.add("Find")
my_set2.add("You.")
print(my_set2)
# 移除元素
my_set2.remove(1)
print(my_set2) # 变为空了 返回的是set()
# 随机取出元素
print(my_set2.pop())
num1 = {1, 2, 4}
num2 = {1, 4, 3, 5}
print(num1.difference(num2)) # 输出的结果是2
print(num1)
num1.difference_update(num2) # 返回的是None
print(num1) # 输出的结果是2
print(num1.union(num2)) # 输出的结果是 {1, 2, 3, 4, 5}
这个和其他语言里面的map是一样的
{key: value, key2: value2}
my_dict = {"Find": 20, "You.": 12}
print(f"my_dict中的元素是: {my_dict}")
print(my_dict["Find"]) # 这个和其他语言里面的map是一样的
stu_score_dict = {
"Find": {
"语文": 99,
"数学": 88,
"英语": 99
}, "You": {
"语文": 90,
"数学": 91,
"英语": 92
}
}
print(f"Find的语文分数是: {stu_score_dict['Find']['语文']}")
# 获取字典里面的全部的key
keys = my_dict.keys()
# 遍历
for key in keys:
print(key, my_dict[key])
字符串转列表,是把每个元素都转换为列表
字典转列表,是把全部的key都转化为了列表,抛弃了value
my_list = [1, 2, 3, 4]
print(list(my_list))
my_tuple = (1, 2, 3, 4)
print(list(my_tuple))
my_string = "FindYou."
print(list(my_string))
my_dict = {"Find": 13, "You.": 14}
print(list(my_dict))
和转列表没什么区别,只不过是[] 变为了()
总的来说是相互转换的,转换后的要符合转换后的容器的特点,比如转换为集合的时候,会变的去重,无序的
sorted(容器, reverse=True or False) 第二个参数不写默认是 reverse=False 是从小到大的,我的;的理解是从小到大,还翻转吗?False,不翻转了,ok,就是从小到大 reverse=True是从大到小排序的,还是和其他语言一样,对字典进行排序的时候是按照value 进行排序的
# 对list进行排序
my_list = [1, 3, 2, 4]
my_list = sorted(my_list) # 默认是从小到大排序的
print(my_list)
# 翻转的方法一:
print(my_list[::-1])
# 翻转的方法二:
my_list = sorted(my_list, reverse=True)
print(my_list)
# 对字典进行排序 是按照value进行排序的 默认是从小到大
my_dic = {"Find": 13, "You.": 14, "Code": 11}
print(sorted(my_dic)) # 输出的结果是:['Code', 'Find', 'You.']
print(sorted(my_dic, reverse=True)) # 输出的结果是:['You.', 'Find', 'Code']
return 值1, 值2,..... 注意是用逗号隔开
def test_return():
return 1, 2 # 注意这里用逗号隔开的
x, y = test_return()
print(x, y) # 输出的是1 2
def user_info(name, age, gender):
print(f"姓名: {name}, 年龄: {age}, 性别: {gender}")
user_info("FindYou.", 20, "男")
def user_info(name, age, gender):
print(f"姓名: {name}, 年龄: {age}, 性别: {gender}")
user_info(name="FindYou.", age=20, gender="男")
user_info(age=20, name="FindYou.", gender="男")
user_info("FindYou.", gender="男", age=20)
def user_info(name, age, gender="男"):
print(f"姓名: {name}, 年龄: {age}, 性别: {gender}")
user_info("FindYou.", 20, )
user_info("FindYou.", 20)
user_infor("FindYou.", 20, "?")
args你可以随便换,只不过这样写显得专业,用的是一个 * ,构成的是一个元组类型
# 位置传递 一个*
def user_info(*args): # 一般写args显得专业
print(args)
print(f"元素的类型是: {type(args)}")
user_info("FindYou.", 20, "男")
user_info("FindYou.")
注意,是元组,你看要是只有一个的话,最后会加个逗号
# 关键字传递 两个** 需要满足key = value的形式 这样组成的是字典
def stu_score(**kwargs):
print(kwargs)
print(f"元素的类型是: {type(kwargs)}")
# 在 Python 中,不允许使用数字作为变量名或关键字参数名
stu_score(FindYou=100, FindYou2=110)
# 就相当于是你在函数里面命名了两个变量了 FindYou2 = 110 这就是为什么不允许传整数了,也不允许传 "FindYou"=110,Y因为就没有带引号的变量名
def test_func(add):
ret = add(1, 2)
print(f"add参数的类型是: {type(add)}")
print(ret)
def add(x, y):
return x + y
test_func(add)
# lambda关键字, 可以定义匿名函数(无名称) 无法二次使用
def test_func(add):
ret = add(1, 2)
print(ret)
test_func(lambda x, y: x + y)
open() 打开函数