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