0
点赞
收藏
分享

微信扫一扫

Python基础知识学习笔记(三)

九月的栩 2022-03-24 阅读 67
python

Python基础知识学习笔记(三)

文章目录


(三)字符串、列表、元组、字典

1.字符串

(1)字符串格式

Python中的字符串可以使用单引号、双引号和三引号(三个单引号或三个双引号)括起来,表示一个字符串

# 方式一:
word = '字符串'

# 方式二:
sentence = "则会是一个句子"

# 方式三:
parapraph = """
        保留引号中的格式
"""
print(word)
print(sentence)
print(parapraph)

代码示例:

 str='chengdu'
print(str) # 输出字符串
print(str[0:-1]) # 输出第一个到倒数第二个的所有字符
print(str[0]) # 输出字符串第一个字符
print(str[2:5]) # 输出从第三个开始到第五个的字符
print(str[2:]) # 输出从第三个开始后的所有字符
print(str * 2) # 输出字符串两次
print(str + '你好') # 连接字符串
print(str[:5]) # 输出第五个字母前的所有字符
print(str[0:7:2]) # [起始:终止:步长]
print('------------------------------')
print('hello\nchengdu') # 使用反斜杠(\)+n转义特殊字符
print(r'hello\npython') # 在字符串前面添加一个 r,表示原始字符串,不会发生转义
print(str.title()) #以首字母大写的方式显示每个单词,每个单词的首字母变为大写。
print(str.upper()) #每个字母变为大写
print(str.lower()) #每个字母变为小写
id(str) #读取内存中的内容
str() #强转为字符串

(2)转义字符

转义字符描述
\反斜杠符号
单引号
"双引号
\a响铃
\b退格
\000
\v纵向制表符
\t横向制表符
\r回车
\f换页
\oyy八进制数,yy 代表的字符,例如:\o12 代表换行,其中 o 是字母,不是数字 0
\xyy十六进制数,yy代表的字符,例如:\x0a代表换行
\other其它的字符以普通格式输出

(3)字符串的方法

序号方法描述
1capitalize()将字符串的第一个字符转换为大写
2center(width, fillchar)返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
3count(str, beg= 0,end=len(string))
count(sub[start[,end]])
返回 str 在 string 里面出现的次数,如果 beg 或者 end指定则返回指定范围内 str 出现的次数
4bytes.decode(encoding=“utf-8”, errors=“strict”)Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由str.encode() 来编码返回。
5encode(encoding=‘UTF-8’,errors=‘strict’)以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace
6endswith(suffix, beg=0, end=len(string))检查字符串是否以 obj 结束,如果beg 或者 end指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False
7expandtabs(tabsize=8)把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是8
8find(str, beg=0, end=len(string))检测 str 是否包含在字符串中,如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
9index(str, beg=0, end=len(string))跟find()方法一样,只不过如果str不在字符串中会报一个异常
10isalnum()如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回False
11isalpha()如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False`
12isdigit()如果字符串只包含数字则返回 True 否则返回 False…
13islower()如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
14isnumeric()如果字符串中只包含数字字符,则返回 True,否则返回 False
15isspace()如果字符串中只包含空白,则返回 True,否则返回 Fals
16istitle()如果字符串是标题化的(见 title())则返回 True,否则返回 False
17isupper()如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字 符都是大写,则返回 True,否则返回 False
18join(seq)以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
19len(string)返回字符串长度
20[ljust(width, fillchar])返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
21lower()转换字符串中所有大写字符为小写
22lstrip()截掉字符串左边的空格或指定字符
23ITmaketrans()创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
24max(str)返回字符串 str 中最大的字母
25min(str)返回字符串 str 中最小的字母
26[replace(old, new , max])把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次
27rfind(str,beg=0,end=len(string))类似于 find()函数,不过是从右边开始查找
28rindex( str, beg=0, end=len(string))类似于 index(),不过是从右边开始
29[rjust(width, fillchar])返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度width 的新字符串
30rstrip()删除字符串字符串末尾的空格
31split(str="", num=string.count(str)) num=string.count(str))以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串
32[splitlines(keepends])按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
33startswith(substr, beg=0,end=len(string))检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查
34[strip(chars])在字符串上执行 lstrip()和 rstrip()
35swapcase()将字符串中大写转换为小写,小写转换为大写
36title()返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见istitle())
37translate(table, deletechars="")根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要 过滤掉的字符放到 deletechars 参数中
38upper()转换字符串中的小写字母为大写
39zfill (width)返回长度为 width 的字符串,原字符串右对齐,前面填充0
40isdecimal()检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false

2.List ( 列表 )

(1)列表的定义

变量名 = [元素1,元素2,元素3,…]
代码示例:

# 列表的定义
namesList = ['xiaoWang','xiaoZhang','xiaoHua']
testList=['test',1] # 混合类型,保持原类型不变

# 通过索引取出列表中的元素
print(namesList[0])
print(namesList[1])
print(namesList[2])

# 通过for循环取出列表中的元素
for name in namesList:
	print(name)

(2)列表的注意事项:

  • 列表是写在方括号[]之间,元素之间用逗号分隔开。
  • 列表索引值以0为开始值,-1为从末尾的开始位置。
  • 列表中元素的类型可以不相同,它支持数字、字符串甚至可以包含列表(所谓的嵌套)。
  • 列表可以使用+操作符进行拼接,使用*表示重复。

(3)列表的常用方法

注意:index代表索引,value代表元素

方法操作名称解释操作
list[index]访问列表中的元素通过下标直接访问列表中的元素
list[start:end:length]列表的切片使用[开始下标索引:结束下标索引 :步进值 ],注意范围区间是"左闭右开"
for i in list:print(i)遍历列表元素for循环
list.append(values)【增】追加数据到列表中尾部新的元素值追加到当前列表中末尾位置,列表当成一个元素加入。
list.extend(list1)【增】列表的追加将其他列表的元素逐一添加到当前列表
list.insert(index,value)【增】列表数据插入根据给定索引指定位置插入元素
del list[index]【删】列表的删除del :我们通过索引删除指定位置的元素。
list.remove(value)【删】remove:移除列表中指定值的第一个匹配值。如果没找到的话,会抛异常
list.pop()【删】弹出列表尾部元素弹出当前列表尾部元素,相当于删除元素
list[index] = 8【改】更新列表中的数据通过下标修改指定元素
value in list【查】列表成员关系in
value not in list【查】列表成员关系not in
list.index(value,start,end)【查】列表成员关系查找列表中是否存在指定的元素,存在返回元素的下标找不到则报错,注意范围区间是"左闭右开"
list.count(value)【查】查找元素出现次数统计指定元素在当前列表中出现的次数
list.sort()【排】列表的排序默认将当前列表元素进行升序排序,listsort(reverse = Ture) # 将列表元素降序
list.reverse()【排】列表的反转将列表所有元素进行反转
list3 = list1 +list2列表的加法操作+
len()获取列表长度获取当前列表长度
max()获取列表元素最大值获取列表元素最大值
min()获取列表元素最小值获取列表元素最小值
list()其他类型对象转换成列表其他类型对象转换成列表

代码示例:

# 列表定义

namelist = ["小张","小王","小李","qzp","wjw"]
print(namelist[0])
print(namelist[0:2:1]) # 列表切片

# 增
namelist.append("尾部") # 列表元素追加
list1 = ["list1"]
namelist.extend(list1) # 追加列表元素
namelist.insert(0,"王者") # 列表元素插入
for name in namelist:
    print(name)
 
# 删
del namelist[5] # 删除指定索引的元素
namelist.remove("qzp") # 删除第一个指定值的元素
namelist.pop() # 弹出末尾最后一个元素
for name in namelist:
    print(name)

# 改
namelist[1] = "小贾"  #修改指定下标元素内容,直接赋值更改

# 查
findName = input("请输入你想要查找的名字")
if findName in namelist: # 查找列表元素是否存在指定的元素
    print("恭喜你,找到你需要的姓名")
else:
    print("很遗憾,没有找到")
    
a = ["a","b","d","c","g","f"]
print(a.index("a", 0, 5)) # 查找列表中是否存在指定的元素,存在返回元素的下标,不存在则报错
a.reverse() # 将列表元素反转
print(a)

a.sort() # 将列表元素升序
print(a)
a.sort(reverse = Ture) # 将列表元素降序
print(len(a)) # 获取列表长度

(4)列表嵌套

一个列表中的元素又是一个列表,就是列表嵌套,说白了,就是一个二维数组。

# 列表嵌套的定义:
schoolNames = [['北京大学','清华大学'],['南开大学','天津大学','天津师范大学'],['山东大学','中国海洋大学']]

# 列表嵌套取出元素
print(schoolNames[0][0])

(5)练习

一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配

代码示例:

import random

# 定义一个列表用来保存3个办公室
offices = [[],[],[]]

# 定义一个列表用来存储8位老师的名字
names = ['A','B','C','D','E','F','G','H']
i = 0
for name in names:
	index = random.randint(0,2)
	offices[index].append(name)
i = 1
for tempNames in offices:
	print('办公室%d的人数为:%d'%(i,len(tempNames)))
	i+=1
    for name in tempNames:
        print("%s"%name,end='')
    print("\n")
    print("-"*20)

3.Tuple ( 元组 )

(1)元组的定义

  • tuple与list相似,不同之处在于tuple的元素写在小括号里,元素之间用逗号隔开。
# 创建空元组
tup1 = ()
# 判断类型
print(type(tup1))

# 运行结果:<class 'tuple'>

元组的定义

tup2 = (50,) # 加逗号,类型为元组
print(type(tup2)) # 输出:<class 'tuple'>
tup3 = (50) # 不加逗号,类型为整型
print(type(tup3)) # 输出:<class 'int'>

注意:定义一个只有一个元素的tuple,必须加逗号

(2)元组的访问

tup1 = ('Google', 'baidu', 2000, 2020)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])

运行结果:

tup1[0]:  Google
tup2[1:5]:  (2, 3, 4, 5)

(3)元组的常用方法

方法操作名称解释操作
tuple[index]访问元组中的元素通过下标直接访问元组中的元素
for i in tuple:print(i)遍历元组for循环
tuple[start:end:length]元组的切片使用[开始下标索引:结束下标索引 :步进值 ],注意范围区间是"左闭右开"
value in tuple【查】元组成员关系in
value not in tuple【查】元组成员关系not in
tuple.count(value)【查】查找元素出现次数统计指定元素在当前元组中出现的次数
del tuple【删】删除元组删除整个元组
tuple3 = tuple1+tuple2【增】元组的加法操作元组的新增方法
len()获取元组长度获取元组列表长度
max()获取元组元素最大值获取元组元素最大值
min()获取元组元素最小值获取元组元素最小值
tuple()其他类型对象转换成元组其他类型对象转换成元组

代码示例:

tup1 = (1,2,3,4,5)

# 增
tup2 = ("qzp","wjw")
tup3 = tup1 + tup2 # 重新创建一个新的元组
print(tup3)

# 删
del tup3 # 删除整个元组变量,不仅仅删除元组里面的元素
print(tup3) # 删除之后,打印就会报错: name 'tup3' is not defined

# 查
print(tup1[0])
print(tup2[1])

# 改
tup1[0] = 100 # 报错,不允许修改

总结元组的注意事项:

  • 定义一个只有一个元素的tuple,必须加逗号。
  • 定义好的元组的元素不可修改,但可以包含对象,如list。
  • 删除时,是删除整个元组,不是元组中的元素。

4.dict ( 字典 )

(1)字典的定义

字典是无序的对象集合,使用键值对(key-value)存储,具有极快的查找速度

# 变量info为字典类型
info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}

(2)字典的特点

  • 字典和列表一样,也能都存储多个数据。
  • 字典的每个元素由2部分组成,键:值。例如 ‘name’:‘班长’ ,'name’为键,'班长’为值。
  • 同一个字典中,键(key)必须是唯一的。
  • 键(key)必须使用不可变类型。

(3)字典的访问

info = {'name':'贾倩倩' , 'age':17}
print(info['name']) # 获取名字
print(info['age']) # 获取年龄
 # 访问不存在的key
print(info['sex']) #直接访问不存在的键,会报错
print(info.get('sex')) # 用get获取不存在的key,获取到空的内容,返回none,不会出现异常
print(info.get('sex','男')) #通过key获取到空的内容,可以设置默认值来返回,获取不为空的内容

(4)字典常用的方法

方法操作名称解释方法
dict[key]访问字典中的元素通过key访问,key不存在会抛出异常
dict.get(key)访问字典中的元素通过get方法,不存在返回None,不抛出异常
for key in dict: print(key,dict[key])遍历字典通过for循环,只能获取key,values需要使用dict[key]获取
for key,value in dict.items():print(key,value)遍历字典配合items方法,获取key和value
dict.keys()【查】获取所有key
dict.values()【查】获取所有value
dict.items()【查】获取所有的key-value每个键值对是一个元组(key , value)
dict[key] = newvalue【改】修改value 直接通过key来修改value
dict[newkey] = newvalue【增】新增键值对直接新增
del dict[key]【删】删除字典元素通过key删除字典元素
dict.pop(key)【删】弹出字典元素通过key弹出字典元素
key in dict判断key是否存在in
dict.update(dict2)合并字典
dict(zip(list1,list2))把列表转化成字典把两个列表转为字典
dict2 = dict([[‘key1’ , ‘value1’]])把一个嵌套列表转为字典把一个嵌套列表转为字典
dict.clear()清除字典内的元素清除字典内的元素
len()获取字典长度
max()获取key最大值
min()获取key最小值
dict()其他类型对象转换成字典

代码示例:

info = {'name':'qzp','age':'24','sex':'男'}

# 遍历
# 遍历所有的主键
for i in info.keys():
    print(i)
# 遍历所有的值
for i in info.values():
    print(i)
# 遍历所有的key-value
for key,value in info.items():
    print("key=%s,value=%s"%(key,value))
    
# 查
print(info['name']) # 根据主键获取值
print(info['age'])
print(info['sex'])
for i in info: # 遍历只能拿到主键
    print(i)
print(info.keys()) # 得到所有的主键列表:dict_keys(['name', 'age', 'sex'])
print(info.values()) #得到所有的值列表:dict_values(['qzp', '24', '男'])
print(info.items()) #得到所有的项列表dict_items([('name', 'qzp'), ('age', '24'), ('sex', '男')])  每个键值对是一个元组(key , value)

# 增
newId = input("请输入你加入的id")
info['id'] = newId
print("_"*20) # 打印分割线
print('新增后遍历字典元素')
for i in info:
    print(i,info[i])

# 删
# del 
del info['id'] # 根据key删除相对应的value
print("删除后的遍历字典元素")
for i in info:
    print(i,info[i])
del info; # 删除字典
# clear :清除字典中的所有元素
info.clear(info);

# 改
info['name'] = 'wjw'

注意:补充知识

myList = ['a','b','c']
for i,x in enumerate(myList): # 使用枚举函数,同时获取列表中的下标索引和下标对应的元素
    print(i+1,x)
#运行结果
1 a
2 b
3 c

5.set ( 集合 )

(1)集合定义

set是一组key的集合,但不存储value

# 创建一个空集合
myset = set()

定义一个集合

myset = set([1,2,3])
print(type(myset)) #输出结果:<class 'set'>
print(myset) # 输出结果:{1, 2, 3}

(2)set的特点

  • 一组key的集合,但不存储value
  • key不可以重复
  • set是无序的,重复的元素会被自动过滤

(3)set常用方法

方法操作名称解释操作
for i in myset:print(i)遍历集合通过for循环遍历集合中的元素
myset.update(set1)更新集合将其他集合中的元素追加到当前集合中
myset.add(key)添加元素向当前集合中添加元素
myset.remove(key)删除元素移除当前集合中存在的元素,key不存在会报错
val = myset.pop()弹出元素随机弹出当前集合中的一个元素,val代表被弹出的元素
myset.clear()清除元素清除当前集合的所有元素
del myset删除集合删除整个集合
len()长度获取集合长度
max()最大值获取集合最大的元素
min()最小值获取集合最小的元素
set()转换其他类型对象转换成集合

6.总结

数据类型是否有序是否可变类型
列表 []有序可变类型
元组 ()有序不可变类型
字典 {}无序key不可变,value可变
集合 {}无序可变类型(不重复)
举报

相关推荐

0 条评论