寒假自学(一)

希望所有温柔又可爱的人最后都能幸福❤
昨天刚回家,今天学习较少,康复阶段
今日总结:

代码量 300行
博客量 一篇
所学时间 4小时左右
了解到的知识点 python列表、元组、字典、字符串

明日计划:

早上 python公共方法
下午 python名片管理系统
晚上 Scala入门

今日学习具体内容:

列表

  • Listpython中使用最频繁的数据类型,在其他语言中通常叫做数组
  • 列表用[]定义,数据之间使用分隔
  • 列表的索引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查看帮助

deldelete的缩写,关键字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提供两个方法,countindex

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个参数,开始,终止,步长)

posted @ 2021-01-03 23:08  DemonSlayer  阅读(61)  评论(0编辑  收藏  举报