Python学习(四)


知识回顾
(1)、Python中变量分为数字型和非数字型
数字型:int.float,bool,complex
非数字型:字符串、列表、元组、字典
(2)、在Python中,所有的非数字型变量都有以下的特点:

  • 都是一个序列,可以理解为容器
  • 取值:[]
  • 遍历:for in
  • 计算长度,最大值,最小值,比较,删除
  • 连接:+ 和 重复:
  • 切片

一、列表

1、列表的定义

列表变量名 = [内容,中间用逗号,同一个列表可以储存不同类型的数据]

2、列表的常见操作

name_list = ["zhangsan","lisi"]

#取值
print(name_list[0])

#取索引
print(name_list.index("lisi"))

#修改
name_list[0] = "wangwu"

#增加值
#append函数向末尾增加
name_list.append("zhangsan")
#insert函数向指定位置增加
name_list.insert(0,"wangmazi")
#extend函数将另一个列表的值完全加入
tmp_list = ["tangseng","sunwukong"]
name_list.extend(tmp_list)
print(name_list)

#删除数据
#remove方法删除确定的值
name_list.remove("tangseng")
#clear方法删除列表中的所有值
name_list.clear()
#pop方法在默认的时候删除列表中最后一个元素,有参数的时候删除指定索引的值并且返回该值
name_list.pop()
name_list.pop(0)
#使用del关键字,删除指定的数据
#del关键字的本质是将数据从内存中删除,一般不建议使用
del name_list[0]

#列表 统计(函数)
#len可以统计列表中元素的个数
l = len(name_list)
#count方法可以统计某一个数据在列表中出现的次数
c = name_list.count("lisi")

#列表排序
num_list = [6,8,4,1,10]
#升序排序
num_list.sort()
name_list.sort()
#降序
num_list.sort(reverse=True)
#逆序反转
num_list.reverse()

#循环遍历列表
for name in name_list:
    print(name,end=" ")
    

列表的循环遍历
语法:

for 循环内部使用的变量 in 列表

for in是在Python中为了提高列表的遍历效率,专门提供的迭代iterator遍历。
与C、Java等语言相同,在使用遍历器遍历的过程中不能进行删除,否则会导致结果不正确,例如下面所示:

#方法一
num_list = [1,90,80,8,9,2]
#删除10以内的数
for num in num_list:
    if num>=0 and num<=10:
        num_list.remove(num)

print(num_list)

#方法二
tmp_list = [1,90,80,8,9,2]
result = []    #注意Python中变量申明的同时必须赋值,才会创建该变量
for num in tmp_list:
    if num>=0 and num<=10:
        result.append(num)
print(result)

for num in result:
    tmp_list.remove(num)
print(tmp_list)

结果
在这里插入图片描述
结果分析
使用方法一,在遍历的过程中删除,应该是导致了迭代器的混乱,所以不能直接删除。
正确的打开方式应该是将需要删除的数据先存到一个列表中,然后再进行删除!

列表操作方法总结:
在这里插入图片描述

3、区分关键字、函数、方法

(1)、关键字:是Python内置的,具有特殊意义的标识符,查看Python的关键字的方法为:

import keyword
print(keyword.kwlist)
#关键字使用的后面不需要使用括号

(2)、函数封装了独立的功能,可以直接调用。

函数名(参数)

(3)、方法
方法和函数类似,同样是封装了独立的功能。
方法需要通过对象来调用,表示针对这个对象要做的操作。

对象.方法名(参数)

二、元组

1.元组的定义

定义
(1)、用于储存一串信息,数据之间用逗号隔开
(2)、元组用()定义
(3)、元组的索引从0开始
(4)、元素不能修改

创建空的元组
name = ()

元组中只包含一个元素的时候,需要在后面加上逗号
name = (5,)

2、元组的基本操作

info_tuple = ("zhangsan",18,1.75)

#取值和取索引
print(info_tuple[0])
print(info_tuple.index("zhangsan"))

#count统计一个数据再元组中出现的次数
print(info_tuple.count("zhangsan"))
#len函数统计元组中数据的个数
print(len(info_tuple))

#循环遍历
for my_info in info_tuple:
    print(my_info)

注意:虽然元素可以for in遍历,但是因为元组可以有很多类型的数据,所以在格式化输出的时候比较复杂,因此很少使用。

3、元组的使用场景

(1)、函数的参数和返回值
(2)、格式字符串,在print函数的格式化输出的时候括号的参数就是一个元组

print("%s 的年龄是 %d 身高是 %.2f" % ("肖战",28,1.83))
tmp_str = "%s 的年龄是 %d 身高是 %.2f" % ("肖战",28,1.83)
print(tmp_str)

(3)、让列表不可以被修改,以保护数据安全

4、列表和元组之间的转换

why:
如果希望列表被保护,不被修改

操作

#列表变为元组
tuple(列表)

#元组变为列表
list(元组)

三、字典

1、定义

(1)、字典是除列表之外Python之中最灵活的数据类型
(2)、字典可以用来存储多个数据,通常用于存储描述一个物体的相关信息
(3)、和列表的区别:列表是有序的,字典是无序的,也就是说使用Print进行输出的时候可能与定义的顺序是不同的,但是好像Python3.7以上顺序是固定的
(4)、字典使用{}进行定义
(5)、字典是键值对:
key是索引
value是值
键和值之间用冒号隔开,不同的对之间都好
键不能重复
值可以是任意的数据类型,但键只能使用字符串数字或者元组

2、基本用法

xiaoming = {"name":"xiaoming"}

#取值,取值的时候如果key不存在那么就会报错
print(xiaoming["name"])

#增加修改值
#key存在就是修改
#key不存在就是增加
xiaoming["age"] = 18
xiaoming["name"] = "xm"

#删除,删除指定的key
#如果key不存在,那么会报错
xiaoming.pop("name")

#统计键值对的数量
print(len(xiaoming))

#合并键值对
#如果被合并的字典中有相同的键值对,那么会覆盖原来的键值对,update么
tmp = {"name":"xiaoming"}
xiaoming.update(tmp)

#清除
xiaoming.clear()
print(xiaoming)

#循环遍历
for k in xiaoming:
    print(xiaoming[k])

3、应用的场景

(1)、使用字典存储一个物体的全部信息
(2)、将多个字典组合成一个列表使用
例如

info_list = [{"name":"xiaoming",
"num":1,
"age":18},
{"name":"lisi",
"num":2,
"age":19},
]
for person in info_list:
    print(person)

四、字符串

1、定义

可以使用单引号和双引号,但是如果字符串内容有单引号,那么用双引号定义;如果字符串内容有双引号,那么用单引号定义。

2、字符串基本操作

1、类型判断

在这里插入图片描述

2、查找替换

在这里插入图片描述

3、大小写转换

在这里插入图片描述

4、文本对齐

在这里插入图片描述

5、去除空白字符

6、拆分和连接

在这里插入图片描述常见方法

hello_str = "hello python"

#统计字符长度
len(hello_str)

#统计某个字符串出现的次数
hello_str.count("llo")

#子串出现的位置
#如果该子串没有出现,那么就会报错
hello_str.index("llo")

#判断字符只由空格和空白字符(\n,\t,\r)
tmp = "  \n\t\r"
tmp.isspace() #输出True

#判断字符串中是否值包含数字,但是都不能判断小数
num_str = "1"

print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())

#判断字符串是否以指定字符串开头
hello_str.startswith("hello")

#判断字符串的结束
hello_str.endswith("python")

#查找指定字符串,返回索引
#两者之间的区别是,index如果指定字符串不存在那么报错,find返回-1
hello_str.find("llo")
hello_str.index("llo")

#替换字符串
#replace(被替换,替换)
#replace执行之后会返回一个新的字符串,但是不会修改原字符串的内容
hello_str.replace("python","world")


空白字符
\n,\t,\r(回车)

3、字符串切片

切片方法适用于字符串列表元组,这三个都是有序的,都可以通过下标取值。

切片的方法
字符串[开始索引:结束索引:步长]
需要注意的一点是,Python中字符串下标为-1代表的是最后的一个字符,-2代表的是倒数第二个字符
步长是从当前字符开始计算的,也就是本身这个字符也是在计算范围内的

注意
(1)、索引的范围是左闭右开
(2)、从头开始,开始索引数字可以省略,冒号不能省略
(3)、到末尾结束,结束索引数字可以省略,冒号不能省略
(4)、步长默认为1,如果连续切片,数字和冒号都可以省略

例子

num_str = "0123456789"
 
 #输出所有的偶数
print(num_str[::2])


 #输出所有的奇数
print(num_str[1::2])

 #使用切片的方法将字符串倒序
 #注意这里的就表示倒序,然后-1表示向左切片
print(num_str[-1::-1])
print(num_str[::-1])  #is ok

五、公共方法

1、Python内置函数

内置函数就是不需要导入工具包可以直接使用的,Python的内置函数有:
在这里插入图片描述del有两种使用方式:
(1)、通过关键字的方式 del data
(2)、函数的方式del(data)

2、切片

在这里插入图片描述字典是不能进行切片操作的,因为字典是无序的,是通过键值对进行数据保存的。

3、运算符

在这里插入图片描述小知识
在这里插入图片描述append函数会将添加的东西视为一个。
当我们需要查看可以使用的方法的时候,可以使用tab键,在终端中查看。

4、for break

what:
在for in遍历的时候,如果是通过break跳出循环的,那么就不执行else中的语句,否则就执行。
使用的场景
如果希望在搜索列表是,所有的内容检查之后,都没有发现需要搜索的目标,还希望统一得到一个提示的时候使用。
例子

student = [
    {"id":1,
    "name":"xiaoming"},
    {"id":2,
    "name":"lisi"},
    {"id":3,
    "name":"zhangsan"}
]
finid = 4
for person in student:
    if person["id"] == 4:
        print("find!")
        break
else:
    print("no find")

六、小技巧

1、字符串判断

场景:根据用户输入的数字选择不同的操作。
技巧
(1)、使用input那么就是字符串,我们并不需要使用int转换用户输入,可以避免一旦用户输入的不是数字,导致程序运行错误
(2)、使用in针对列表判断,而不是使用or
例如
在这里插入图片描述

2、pass

pass就是一个空语句,不做任何事情,一般用做占位符,是为了保持程序结构的完整性。

3、TODO注释

在#使用TODO,用于标记需要去做的工作

4、改变变量名

在VSCODE中如果要改变变量名,鼠标指向变量-》右键-》重命名,可以一次性改变全部。

5、Linux上Shebang符号(#!)

#!这个符号叫做Shebang,通常在Linux系统脚本中的第一行开头使用,指明执行这个脚本文件的解释程序。也就是说可以直接用./*.py执行程序而不是python *.py。

操作
(1)、使用which查询python3解释器所在路径
(2)、修改要运行的主Python文件,在第一行增加

#! python3解释器的路径

(3)、修改主Python文件的文件权限,增加执行权限

sudo chmod +x main.py

(4)、执行程序

./main.py
不再需要python main.py

开学前辛苦营业的一天
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值