Day 3
序列——一组按照顺序排列的值【数据集合】
序列:字符串、列表、元组
优点:支持索引和切片
特征:第一个正索引为0,指向的是左端,第一个索引为负数的时候,指向的是右端
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KmQr3rM9-1614642253150)(https://static.runoob.com/wp-content/uploads/123456-20200923-1.svg)]
切片——根据下标获取序列对象中的部分内容
切片语法结构:
【start:end:step】 step 默认为1
下标会越界,切片不会越界
字符串
字符串常用函数
1 | capitalize() 将字符串的第一个字符转换为大写 |
---|---|
2 | center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
3 | count(str, beg= 0,end=len(string)) 返回 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,否则返回 False. |
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 | maketrans() 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
24 | max(str) 返回字符串 str 中最大的字母。 |
25 | min(str) 返回字符串 str 中最小的字母。 |
26 | [replace(old, new , max]) 把 将字符串中的 old 替换成 new,如果 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)) 以 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。 |
字符串常用函数案例
dataStr='I love python'
print(dataStr.find('p')) #查找 返回下标
print(dataStr.index('p')) #查找 返回下标 若没有 则报错
print(dataStr.startswith('I')) #是否以 为开头
print(dataStr.endswith('n')) #是否以 为结尾
print(dataStr.lower()) #转小写
print(dataStr.upper()) #转大写
切片案例
strMsg='hello world'
# 切片slice[start:end:step] 不包含end 左闭右开
print(strMsg) #输出完整
print(strMsg[2:5]) #输出部分 2-5之间
print(strMsg[2:]) #从第3个到最后
print(strMsg[:3]) #从0到3个 0可以省略
print(strMsg[::-1]) #倒序输出 负号表示方向
列表
list 列表——有序的集合 可以随时增加或删除数据
list特点:
- 支持增删改查
- list中的数据是可以变化的【数据项可以变化,内存地址不会改变】
- 用[]来表示list类型,数据项之间用逗号来分割 数据项可以是任何类型的数据
- 支持索引和切片操作
list索引
list常用方法
1 | list.append(obj) 在列表末尾添加新的对象 |
---|---|
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) 将对象插入列表 |
6 | [list.pop(index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort( key=None, reverse=False) 对原列表进行排序 |
10 | list.clear() 清空列表 |
11 | list.copy() 复制列表 |
list查找
#查找
listA=['abcd',789,12.25,'qwe',True]
print(listA) #输出list
print(listA[0]) #输出第一个
print(listA[1:3]) #输出第二个到第三个元素
print(listA[2:]) #输出第三个元素到最后一个元素
print(listA[::-1]) #倒序输出
print(listA*2) #输出多次list
listB=list(range(10,20))
print(listB.index(18)) #返回索引下标
list增加
#增加
listA=['abcd',789,12.25,'qwe',True]
print(listA)
listA.append(['fff','ddd']) #追加
listA.append(8888) #追加
print(listA)
listA.insert(1,'插入') #指定位置插入
print(listA)
rsData=list(range(10)) #快速构建list
listA.extend(rsData) #批量增加 拓展
print(listA)
list修改
#修改
listA=['abcd',789,12.25,'qwe',True]
listA[0]='qewqwewqe' #修改 通过索引
print(listA)
list删除
#删除
listB=list(range(10,20))
print(listB)
del listB[0] #删除一个数据
del listB[1:5] #批量删除
listB.remove(18) #移除指定元素 参数为数据值
listB.pop(1) #移除指定项 参数为索引值
print(listB)
元组
tuple元组——不可变的序列,创建后不可修改
特点:
- 不可变
- 用()创建,数据项用逗号分割
- 可以为任何类型
- 当元组中只有一个元素时,要加上逗号,不然解释器会当作整形处理
- 支持索引&切片
tuple的创建
#元组的创建 不可修改
tupelA=('qwe',123,12.3,'deer',[11,22])
print(tupelA)
tuple的查询
#元组的查询
print(tupelA[2:4]) #输出第三个到第四个
print(tupelA[::-1]) #逆序输出
print(tupelA[::-2]) #逆序隔两个取一个
print(tupelA[-2:-1:]) #倒着取下标为-2到-1区间的
注:元组中的列表可以被修改
tupelA[4][0]=456789 #可以对元组中的列表修改
print(tupelA)
字典
dict字典——以键值对形式组成的集合 {‘key’:‘value’}
根据键进行查找
可以增删改查
key不可以重复,只能是不可变类型,如:数字,字符串,元组
特点:
- 不是序列类型,没有下标概念,是无序的键值集合
- 键必须为不可变类型(元组、字符串)
- 键必定唯一,如果存在重复,则后者覆盖前者
dict常用方法
1 | radiansdict.clear() 删除字典内所有元素 |
---|---|
2 | radiansdict.copy() 返回一个字典的浅复制 |
3 | radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 | radiansdict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
5 | key in dict 如果键在字典dict里返回true,否则返回false |
6 | radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组 |
7 | radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表 |
8 | radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里 |
10 | radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表 |
11 | [pop(key,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
12 | popitem() 随机返回并删除字典中的最后一对键和值。 |
dict增删改查
#创建字典
dictA={'pro':'art','school':'ssfz'}
#添加字典数据
dictA['name']='deer' #key:value
dictA['age']=30
dictA['pos']='singer'
print(dictA)
print(len(dictA))
print(dictA['name']) #通过键获取对应的值
dictA['name']='lqj' #通过键修改对应的值
dictA.update({'age':15}) #添加或更新
print(dictA)
print(dictA.keys()) #获取所有键
print(dictA.values()) #获取所有值
print(dictA.items()) #获取所有键值对
for key,value in dictA.items():
print('%s==%s'%(key,value))
pass
del dictA['name'] #删除指定键
dictA.pop('age') #删除指定键
print(dictA)
dict排序
#排序 按照key
print(sorted(dictA.items(),key=lambda d:d[0]))
#排序 按照value
print(sorted(dictA.items(),key=lambda d:d[1]))
公共操作
合并——str,list,tuple
#合并+
#字符串合并
strA='my'
strB='love'
print(strA+strB)
#列表合并
listA=list(range(10))
listb=list(range(10,20))
print(listA+listb)
复制——str,list,tuple
#复制 *
print(strA*3)
print(listA*3)
in判断元素是否存在——str,list,tuple,dict
#in 对象是否存在 返回bool值
print('m' in strA)
print(5 in listA)
dictA={'name':'deer'}
print('name'in dictA)