Python学习(四)

拜拜、爱过 提交于 2019-11-27 21:34:15


知识回顾
(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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!