杂项
-
如果一个制表符
/t
不能对齐,可以多加几个; -
只有将字典转换为字符串的时候才会保留字典的value,转成集合、列表、元组、都会丢失value
函数
例子1:
str1 = "hello world"
# 函数定义
def my_len(data):
count = 0
for i in data:
count += 1
print(f"字符串{data}长度为{count}")
my_len(str1) #!!!
输出:
字符串hello world长度为11
例子2:没有指定返回值,返回的就是None
def multi(x, y):
result = x * y
print(f"{x} + {y} 的计算结果:{result}" )
res1 = multi(3, 2)
输出:
3 + 2 的计算结果:6
None
None等同与False
例子3:给函数添加注释
使用多行注释
def multi(x, y):
"""
:param x:
:param y:
:return: x * y的结果
"""
result = x * y
print(f"{x} + {y} 的计算结果:{result}")
return result
例子4:全局变量和局部变量
num = 200
def test_b():
global num # 加上global 表明和外面全局的num是同一个数字
num = 500
print(f"test_b:{num}")
test_b() # test_b:500
print(num) # 500
列表
列表索引可以为负数,-1代表最后一个元素
例子1:索引为负
name_list = ['nokia', True, 22]
print(name_list[-1])
print(name_list[-2])
print(name_list[-3])
print(type(name_list))
输出:
22
True
nokia
<class ‘list’>
放在class里面的函数,我们称为方法
例子2:extend函数批量追加元素
mylist1 = ["apple", "banana", "python"]
mylist2 = [2, 3, 4]
mylist1.extend(mylist2)
print(mylist1) # ['apple', 'banana', 'python', 2, 3, 4]
常用列表方法
元组
要点
- 可以存储多个、不同类型的元素但是不能被修改,用()定义;
- 如果元组里嵌套了list,则可修改这个list;
- 元组可以嵌套使用;
例子1
t1 = (1, "hello", False)
t2 = ()
t3 = tuple()
t4 = ("good") # 只有一个元素会被识别为str类型,要加一个,才会是元组类型
t5 = ("bad", )
print(f"t1类型为{type(t1)}, 内容为{t1}")
print(f"t1类型为{type(t2)}, 内容为{t2}")
print(f"t1类型为{type(t3)}, 内容为{t3}")
print(f"t1类型为{type(t4)}, 内容为{t4}")
print(f"t1类型为{type(t5)}, 内容为{t5}")
输出
t1类型为<class ‘tuple’>, 内容为(1, ‘hello’, False)
t1类型为<class ‘tuple’>, 内容为()
t1类型为<class ‘tuple’>, 内容为()
t1类型为<class ‘str’>, 内容为good
t1类型为<class ‘tuple’>, 内容为(‘bad’,)
例子2:元组的方法
t1 = ("good", "bad", "well", "best", "worse", "good")
index = t1.index("best") # 查找"best"在t1中的索引
print(f"best 在t1中的索引为{index}")
num = t1.count("good") # 查找good在t1中出现次数
print(f"good 在t1中出现次数{num}")
len_t1 = len(t1)
print(f"t1中元素个数:{len_t1}")
# 元素遍历
index = 0
while index < len_t1:
print(f"t1[{index}] = {t1[index]}")
index += 1
输出:
best 在t1中的索引为3
good 在t1中出现次数2
t1中元素个数:6
t1[0] = good
t1[1] = bad
t1[2] = well
t1[3] = best
t1[4] = worse
t1[5] = good
例子3:元组中嵌套list可修改
t2 = (1, 2, ["hello", "world"])
print(f"t2内容为{t2}")
t2[2][0] = "apple"
t2[2][1] = "pear"
print(f"t2内容为{t2}")
输出
t2内容为(1, 2, [‘hello’, ‘world’])
t2内容为(1, 2, [‘apple’, ‘pear’])
字符串
例子1:字符串替换 replace
注意替换并不会修改原来字符串的值,而是返回一个新的替换后的字符串
my_str = "Royal never giveup"
new_mystr = my_str.replace("never", "forever")
print(f"将字符串{my_str}替换后得到{new_mystr}") #将字符串Royal never giveup替换后得到Royal forever giveup
例子2:切分字符串 split,同样不会修改原字符串
my_str = "Royal never giveup"
# 将my_str 按照空格切分,得到列表
my_str_list = my_str.split(" ")
print(f"将字符串{my_str}进行切分后得到:{my_str_list}, 类型是: {type(my_str_list)}")
# 将字符串Royal never giveup进行切分后得到:['Royal', 'never', 'giveup'], 类型是: <class 'list'>
例子3:去除前后指定字符 strip
my_str = " Royal never giveup "
# 不传入参数,则去除前后空格
new_my_str = my_str.strip()
print(f"字符串:{my_str}调用strip后,结果为:{new_my_str}")
my_str = "23Royal never giveup32"
# 去除my_str 前后的"2" 和 "3"
new_my_str = my_str.strip("23")
print(f"字符串:{my_str}调用strip后,结果为:{new_my_str}")
输出
字符串: Royal never giveup 调用strip后,结果为:Royal never giveup
字符串:23Royal never giveup32调用strip后,结果为:Royal never giveup
切片
例子1
# 切片操作
my_list = [1, 2, 3, 4, 5, 6]
result = my_list[1:4]
print(result) # [2, 3, 4]
# 对tuple切片
my_tuple = (2, 3, 4, 5, 6)
result2 = my_tuple[:]
print(result2) # (2, 3, 4, 5, 6)
集合
集合set
使用 {}
进行定义,并且不允许存储重复元素
例子1
my_set = {"你好", "我好", "大家好", "我好", "大家好", "我好"}
my_set_empty = set() # 定义空集合
print(f"my_set的内容是:{my_set}, 类型是{type(my_set)}")
print(f"my_set_empty:{my_set_empty}, 类型是{type(my_set_empty)}")
my_set.add("python")
my_set.add("你好")
print(f"my_set添加元素后的结果是:{my_set}")
my_set.remove("大家好")
print(f"my_set移除元素后的结果是:{my_set}")
my_set = {"你好", "我好", "大家好"}
element = my_set.pop() # 随机取出一个元素,注意是随机取
print(f"集合被取出的元素是:{element}, 取出元素后:{my_set}")
输出
my_set的内容是:{‘大家好’, ‘我好’, ‘你好’}, 类型是<class ‘set’>
my_set_empty:set(), 类型是<class ‘set’>
my_set添加元素后的结果是:{‘大家好’, ‘我好’, ‘python’, ‘你好’}
my_set移除元素后的结果是:{‘我好’, ‘python’, ‘你好’}
集合被取出的元素是:大家好, 取出元素后:{‘我好’, ‘你好’}
例子2: 取差集 difference
set1 = {1, 2, 3}
set2 = {1, 5, 6}
# 取set1里有而set2里没有的元素
set3 = set1.difference(set2)
print(f"取出差集后的结果是:{set3}")
print(f"取出差集后,原有set1内容:{set1}")
print(f"取出差集后,原有set2内容:{set2}")
输出:
取出差集后的结果是:{2, 3}
取出差集后,原有set1内容:{1, 2, 3}
取出差集后,原有set2内容:{1, 5, 6}
例子3:消除相同元素
set1 = {1, 2, 3}
set2 = {1, 5, 6}
# 消除 set1 中 与 set2中相交的元素
set1.difference_update(set2)
print(f"消除差集后,set1:{set1}")
print(f"消除差集后,set2:{set2}")
输出
消除差集后,set1:{2, 3}
消除差集后,set2:{1, 5, 6}
例子4:合并集合union
union会去重
set1 = {1, 2, 3}
set2 = {1, 5, 6}
# 两集合合并
set3 = set1.union(set2)
print(f"合并集后,set3:{set3}")
print(f"合并集后,set1:{set1}")
print(f"合并集后,set2:{set2}")
输出
合并集后,set3:{1, 2, 3, 5, 6}
合并集后,set1:{1, 2, 3}
合并集后,set2:{1, 5, 6}
字典
例子1:基本使用
my_dict1 = {"周杰伦" : 87, "林俊杰" : 99, "陈奕迅" : 88}
# 定义空字典
my_dict2 = {}
my_dict3 = dict()
print(f"字典1的内容是:{my_dict1}, 类型是:{type(my_dict1)}")
print(f"字典2的内容是:{my_dict2}, 类型是:{type(my_dict2)}")
print(f"字典3的内容是:{my_dict3}, 类型是:{type(my_dict3)}")
# 定义重复key的字典,字典的key不允许重复
my_dict1 = {"周杰伦" : 87, "周杰伦" : 99, "陈奕迅" : 88}
print(f"重复key的字典内容是:{my_dict1}")
输出:
字典1的内容是:{‘周杰伦’: 87, ‘林俊杰’: 99, ‘陈奕迅’: 88}, 类型是:<class ‘dict’>
字典2的内容是:{}, 类型是:<class ‘dict’>
字典3的内容是:{}, 类型是:<class ‘dict’>
重复key的字典内容是:{‘周杰伦’: 99, ‘陈奕迅’: 88}
例子2:定义嵌套字典
stu_score_dict = {
"周杰伦":{
"语文":88,
"数学":99,
"英语":92
},
"林俊杰":{
"语文":99,
"数学":87,
"英语":93
},
"陈奕迅":{
"语文":84,
"数学":99,
"英语":99
}
}
score = stu_score_dict["周杰伦"]["英语"]
print(f"周杰伦的英语成绩为:{score}")
score = stu_score_dict["陈奕迅"]["数学"]
print(f"陈奕迅的数学成绩为:{score}")
输出:
周杰伦的英语成绩为:92
陈奕迅的数学成绩为:99
例子3:字典常用操作
my_dict1 = {"周杰伦" : 87, "林俊杰" : 99, "陈奕迅" : 88}
score = my_dict1.pop("周杰伦") # 删除 key 为周杰伦的 pair
print(f"字典中被移除了一个元素,结果为:{my_dict1}, 周杰伦的考试分数是:{score}")
# 获取字典中全部的key
my_dict1 = {"周杰伦" : 87, "林俊杰" : 99, "陈奕迅" : 88}
keys = my_dict1.keys()
print(f"字典的全部keys是{keys}")
# 对字典遍历
print("--------------")
for key in keys:
print(f"字典的key是:{key}")
print(f"字典的value是:{my_dict1[key]}")
输出:
字典中被移除了一个元素,结果为:{‘林俊杰’: 99, ‘陈奕迅’: 88}, 周杰伦的考试分数是:87
字典的全部keys是dict_keys([‘周杰伦’, ‘林俊杰’, ‘陈奕迅’])
--------------
字典的key是:周杰伦
字典的value是:87
字典的key是:林俊杰
字典的value是:99
字典的key是:陈奕迅
字典的value是:88
例子4:各种容器的排序
my_list = [1, 2, 9, 4, 5]
my_tuple = (1, 8, 2, 7, 2)
my_str = "abcdefs"
my_set = {1, 4, 2, 8, 22}
my_dict = {"key1": 1, "key2": 2, "key3": 3, "key4": 4, "key5": 5}
print(f"列表对象排序的结果:{sorted(my_list)}")
print(f"元组对象排序的结果:{sorted(my_tuple)}")
print(f"字符串对象排序的结果:{sorted(my_str)}")
print(f"集合对象排序的结果:{sorted(my_set)}")
print(f"字典对象排序的结果:{sorted(my_dict)}")
print("----------------")
print(f"列表对象反向排序的结果:{sorted(my_list,reverse=True)}")
print(f"元组对象反向排序的结果:{sorted(my_tuple,reverse=True)}")
print(f"字符串对象反向排序的结果:{sorted(my_str,reverse=True)}")
print(f"集合对象反向排序的结果:{sorted(my_set,reverse=True)}")
print(f"字典对象反向排序的结果:{sorted(my_dict,reverse=True)}")
输出:
列表对象排序的结果:[1, 2, 4, 5, 9]
元组对象排序的结果:[1, 2, 2, 7, 8]
字符串对象排序的结果:[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘s’]
集合对象排序的结果:[1, 2, 4, 8, 22]
字典对象排序的结果:[‘key1’, ‘key2’, ‘key3’, ‘key4’, ‘key5’]
----------------
列表对象反向排序的结果:[9, 5, 4, 2, 1]
元组对象反向排序的结果:[8, 7, 2, 2, 1]
字符串对象反向排序的结果:[‘s’, ‘f’, ‘e’, ‘d’, ‘c’, ‘b’, ‘a’]
集合对象反向排序的结果:[22, 8, 4, 2, 1]
字典对象反向排序的结果:[‘key5’, ‘key4’, ‘key3’, ‘key2’, ‘key1’]