寒假自学(一)
希望所有温柔又可爱的人最后都能幸福❤
昨天刚回家,今天学习较少,康复阶段
今日总结:
代码量 | 300行 |
---|---|
博客量 | 一篇 |
所学时间 | 4小时左右 |
了解到的知识点 | python列表、元组、字典、字符串 |
明日计划:
早上 | python公共方法 |
---|---|
下午 | python名片管理系统 |
晚上 | Scala入门 |
今日学习具体内容:
列表
List
是python
中使用最频繁的数据类型,在其他语言中通常叫做数组- 列表用
[]
定义,数据之间使用,分隔 - 列表的索引从
0
开始- 索引就是数据在列表中的位置编号,索引又可以被称为下标,不能超出索引范围
针对列表的常用方法:
使用函数名调用函数,调用方法要使用变量.
append、count、insert、reverse、clear、extend、pop、sort、copy、index、remove
name_list = ["zhangsan", "lisi", "wangwu"]
print(name_list[2])
print(name_list.index("lisi"))
name_list[1] = "李帅"
name_list.append("asjkhd")
name_list.insert(4, "蒲")
temp_list = ["swk", "zbj", "ssd"]
name_list.extend(temp_list)
name_list.remove("wangwu")
name_list.pop()
name_list.pop(3)
name_list.clear()
print(name_list)
光标放在方法上按住CTRL+Q
查看帮助
del
是delete
的缩写,关键字delete
可以删除列表元素
该关键字本质上是将一个变量从内存中删除,不建议使用
name_list = ["zhangsan", "lisi", "wangwu"]
del name_list[1]
name = "小明"
del name
print(name_list)
len
统计列表长度,count(数据)
统计次数
name_list = ["张三", "李四", "王五", "王小二", "张三"]
list_len = len(name_list)
print(list_len)
count = name_list.count("张三")
print(count)
name_list.remove("张三")
print(name_list)
排序,sort
,翻转reverse
name_list = ["zhangsan","lisi","wangwu","wangxiaoer"]
num_list = [6,8,4,1,0]
#升序
# name_list.sort()
# num_list.sort()
#降序
# name_list.sort(reverse=True)
# num_list.sort(reverse=True)
#翻转
name_list.reverse()
num_list.reverse()
print(name_list)
print(num_list)
所谓函数,是封装了一块独立代码,可以直接调用
循环遍历
-
从头到尾依次从列表中获取数据
-
在循环体内部针对每一个元素,执行相同的操作
-
在
python
中为了提高列表的效率,专门提供的迭代遍历iteration
遍历 -
使用
for
就能够实现迭代遍历name_list = ["张三", "李四", "王五", "王小二"] for my_name in name_list: print("我的名字叫 %s" % my_name)
元组
Tuple
(元组)与列表类似,不同之处在于元组的元素不能修改- 元组表示多个元素组成的序列
- 元组在
python
开发中,有特定的应用场景
- 用
()
定义 - 元组的索引从
0
开始
只包含一个元素时,需要在元素后面加一个,
python
提供两个方法,count
,index
info_tuple = ("zhangsan", 18, 1.75, "zhangsan")
for i in info_tuple:
print(i)
print(info_tuple[0])
print(info_tuple.index("zhangsan"))
print(info_tuple.count("zhangsan"))
print(len(info_tuple))
- 函数的参数和返回值,一个函数可以接收任意多个参数,或者一次性返回多个数据
- 有关函数的参数和返回值,在后续的函数高级介绍
- 格式字符串,格式化字符串后面的
()
本质上就是一个元组 - 让列表不可以被修改,以保护数据安全
使用tuple
函数可以把列表转换成元组,使用list
转换成列表
info_tuple = ("小明", 21, 1.75)
print("%s 年龄是 %d 身高是 %.2f" % info_tuple)
info_str = "%s 年龄是 %d 身高是 %.2f" % info_tuple
print(info_str)
字典
dictionary
字典是除列表外python
之中最灵活的数据类型- 字典同样可以用来存储多个数据
- 通常用于存储描述一个
物体
的相关信息
- 通常用于存储描述一个
- 和列表的区别
- 列表是有序的对象集合
- 字典是无序的对象集合
- 字典用
{}
定义 - 字典用键值对存储数据,键值对之间用
,
分隔- 键
key
是索引 - 值
value
是数据 - 键和值之间使用
:
分隔 - 键必须是唯一的
- 值可以取任何数据类型,但键只能使用字符串、数字或元组
- 键
# 字典是无序的数据集合
xiaoming_dict = {"name": "小明",
"age": 18,
"gender": True,
"height": 1.75,
"weight": 75.5}
# 取值
print(xiaoming_dict["name"])
# 新增
xiaoming_dict["age2"] = 18
# 修改
xiaoming_dict["name"] = "小小明"
# 删除
xiaoming_dict.pop("name")
print(xiaoming_dict)
常用操作
xiaoming_dict = {"name": "小明",
"age": 18,
"gender": True,
"height": 1.75,
"weight": 75.5}
print(len(xiaoming_dict))
# 迭代遍历 k是每一次循环中获得的key
for k in xiaoming_dict:
print("%s - %s" % (k , xiaoming_dict[k]))
# 合并
temp_dict = {"height":1.75,
"age":20}
xiaoming_dict.update(temp_dict)
# 清空
xiaoming_dict.clear()
print(xiaoming_dict)
应用场景
# 字典+列表
card_list = [
{"name": "张三",
"qq": 123456,
"phone": "110"},
{"name": "李四",
"qq": 54321,
"phone": "10086"}
]
for card_info in card_list:
print(card_info)
字符串
- 一串字符连起来的串
- 在
python
中可以使用一对双引号"
或者一对单引号'
- 如果字符串内部需要使用
"
就用'
定义 - 如果字符串内部需要使用
'
就用"
定义
- 如果字符串内部需要使用
- 也可以使用索引获取一个字符串中指定位置的字符,索引计数从0开始
- 也可以使用
for
循环遍历字符串中每一个字符
一般使用"
定义
基本操作
str1 = "hello python"
str2 = '我的外号是"大西瓜"'
print(str2)
print(str1[6])
for char in str2:
print(char)
# 统计字符串长度
print(len(str1))
print(str1.count("he"))
print(str1.index("llo"))
# print(str1.index("abc"))
常用方法
- 判断类型
方法 | 说明 |
---|---|
string.isspace() | 如果string中只包含空格或空白字符,返回True |
string.isalnum() | 如果string至少有一个字符并且所有都是字母或者数字则返回True |
string.isalpha() | 如果string至少有一个字符并且所有字符都是字母则返回True |
string.isdecimal() | 如果string只包含数字则返回True,全角数字 |
string.isdigit() | 如果string只包含数字则返回True,全角数字、(1)、\u00b2 |
string.isnumeric() | 如果string只包含数字则返回True,全角数字、汉字数字 |
string.istitle() | 如果string是标题化的(每个单词的首字母大写)则返回True |
string.islower() | 如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True |
string.isupper() | 如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True |
# 判断空白字符串
space_str = " \t\n\r"
print(space_str.isspace())
# 判断字符串是否只包含数字
# 都不能判断小数
# num_str = "1"
# num_str = "\u00b2" # \u表示转移00b2是unicode编码
num_str = "一千零一"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
- 查找和替换
方法 | 说明 |
---|---|
string.startswith(str) | 检查字符串是否以str开头,是则返回True |
string.endswitch(str) | 检查字符串是否以str结束,是则返回True |
string.find(str,start=0,end=len(string)) | 检测str是否包含在string中,如果start和end指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 |
string.rfind(str,start=0,end=len(string)) | 类似于find()函数,不过是从右边开始查找 |
string.index(str,start=0,end=len(string)) | 跟find()方法类似,只不过如果str不在string会报错 |
string.rindex(str,start=0,end=len(string)) | 类似于index(),不过是从右边开始 |
string.replace(old_str,new_str,num=string.count(old)) | 把string中old_str替换成new_str,如果num指定,则替换不超过num次 |
hello_str = "hello world"
# 开始
print(hello_str.startswith("Hello"))
# 结束
print(hello_str.endswith("world"))
# 查找
print(hello_str.find("llo"))
# 替换
# replace不会修改原有字符串,但会返回新字符串
print(hello_str.replace("world", "python"))
print(hello_str)
- 大小写转换
方法 | 说明 |
---|---|
string.capitalize() | 把字符串的第一个字符大写 |
string.title() | 把字符串的每个单词首字母大写 |
string.lower() | 转换string中所有大写字符为小写 |
string.upper() | 转换string中的小写字母为大写 |
string.swapcase() | 翻转string中的大小写 |
- 文本对齐
方法 | 说明 |
---|---|
string.ljust(width) | 返回一个原字符串左对齐,并使用空格填充至长度width的新字符串 |
string.rjust(width) | 返回一个原字符串右对齐,并使用空格填充至长度width的新字符串 |
string.cente(width) | 返回一个原字符串居中,并使用空格填充至长度width的新字符串 |
poem = ["登鹳雀楼",
"王之涣",
"白日依山尽",
"黄河入海流",
"欲穷千里目",
"更上一层楼"]
for i in poem:
print("|%s|" % i.center(10, " "))
for i in poem:
print("|%s|" % i.ljust(10, " "))
for i in poem:
print("|%s|" % i.rjust(10, " "))
- 去除空白字符
方法 | 说明 |
---|---|
string.lstrip() | 截掉string左边(开始)的空白字符 |
string.rstrip() | 截掉string右边(末尾)的空白字符 |
string.strip() | 截掉string左右两边的空白字符 |
poem2 = ["\t\n登鹳雀楼",
"王之涣",
"白日依山尽\t\n",
"黄河入海流",
"欲穷千里目",
"更上一层楼"]
for i in poem2:
print("|%s|" % i.strip().ljust(10, " "))
- 拆分和连接
方法 | 说明 |
---|---|
string.partition(str) | 把字符串string分成一个3元素的元组(str前面,str,str后面) |
string.rpartition(str) | 类似于partition()函数,不过是从右边开始查找 |
string.split(str="",num) | 以str为分隔符切片string,如果num有指定值,则仅分隔num+1个子字符串,str默认包含’\t‘,'\r','\n'和空格 |
string.splitlines() | 按照行('\r','\n','\r\n')分隔,返回一个包含各行作为元素的列表 |
string.join(seq) | 以string作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串 |
poem_str = "登鹳雀楼\t王之涣\t白日依山尽\t\n黄河入海流\t\t欲穷千里目\t更上一层楼"
print(poem_str)
poem_list = poem_str.split()
print(poem_list)
result = " ".join(poem_list)
print(result)
字符串切片
poem_str = "登鹳雀楼\t王之涣\t白日依山尽\t\n黄河入海流\t\t欲穷千里目\t更上一层楼"
print(poem_str)
poem_list = poem_str.split()
print(poem_list)
result = " ".join(poem_list)
print(result)
print(poem_str[2:6])
print(poem_str[::6])
print(result[-1])
print(result[1::2])
print(result[2:-1])
# 末尾两个
print(result[-2:])
# 逆序
print(result[-1::-1])
(理解成for
循环的3个参数,开始,终止,步长)