基础数据类型1点这里
书接上回:
s.find(sub[,start[,end]])
--> 返回该元素最小的索引(从左到右)
s
中在start
到end
范围内的第一个sub
的索引,返回sub
的索引位置。若在指定范围内没有sub
,则返回-1
需要变量接收。s.rfind(sub[,start[,end]])
--> 返回该元素最小的索引(从右到左)
s1 = "hello world"
# 012345678910
print(s1.find('o')) # 在 s1 中查找 o 的索引
print(s1.rfind('o')) # 在 s1 中查找 o 的索引(从右边开始)
print(s1.find('o', 6, 10)) # 在 s1 中查找 o 的索引,指定索引范围:索引值在6-10之间
print(s1.find('a')) # 在 s1 中查找 a 的索引
4
7
7
-1
s.index(sub[,start[,end]])
--> 返回该元素最小的索引
s
中在start
到end
范围内的第一个sub
的索引,返回sub
的索引位置。若在指定范围内没有sub
,则触发ValueError
需要变量接收。s1 = "hello world"
print(s1.index('o')) # 在 s1 中查找 o 的索引
print(s1.index('o', 6, 10)) # 在 s1 中查找 o 的索引,指定索引范围:索引值在6-10之间
print(s1.index('a')) # 在 s1 中查找 a 的索引
4
7
Traceback (most recent call last):
print(s1.index('a'))
ValueError: substring not found
S.replace(old, new[, count])
--> 替换
new
替代s
中的old
。count
表示替换的次数,如果不指定次数,则有多少替换多少,返回值:返回替换后的字符串。s1 = "hello world"
print(s1.replace('o', 'a')) # 在 s1 中用 a 替代 o ,默认全部替换
print(s1.replace('o', 'a', 1)) # 在 s1 中用 a 替代 o ,替换 1 次
hella warld
hella world
S.split(sep=None)
--> 以sep
来分割字符串,并返回列表。sep
默认为None
,分割默认为空格
sep
作为分隔符分隔字符串s
,分隔符必须在字符串s
中存在,默认是空格,返回值:返回分隔后的字符串列表。若sep
不在s
中,返回的也是列表,列表元素是字符串s
s1 = "hello world"
print(s1.split()) # 分割字符串 s1 ,默认为以空格为分隔符进行分割
print(s1.split('o')) # 分割字符串 s1 ,以 o 为分隔符进行分割
print(s1.split('a')) # 分割字符串 s1 ,以 a 为分隔符进行分割
['hello', 'world']
['hell', ' w', 'rld']
['hello world']
S.startswith(prefix[, start[, end]])
--> 判断字符串是否以前缀开始,返回为bool
值。
prefix
,必选 。start
,end
可选 指定prefix
在s
中的查找范围,判断在s
中指定的范围内是否以prefix
开头,返回值:布尔值,True
或False
。在指定范围内以的字符串以prefix
开头则返回True
,否则返回False
,需要变量接收s1 = "hello world"
print(s1.startswith('h')) # 判断字符串 s1 是否以 h 为前缀
print(s1.startswith('o')) # 判断字符串 s1 是否以 h 为前缀
print(s1.startswith('o', 7, 10)) # 判断字符串 s1 中在索引值为7-10的范围内是否以 o 为前缀
True
False
True
S.endswith(suffix[, start[, end]])
--> 判断字符串是否以尾缀结束,返回为bool
值。
suffix
,必选。start
,end
可选 指定suffix
在s
中的查找范围。判断在s
中指定的范围的字符串是否以suffix
结尾。返回值:布尔值。True
或False
。在指定范围内以的字符串以suffix
结尾则返回True
,否则返回False
,需要变量接收。s1 = "hello world"
print(s1.endswith('d')) # 判断字符串 s1 是否以 d 为后缀
print(s1.endswith('o')) # 判断字符串 s1 是否以 o 为后缀
print(s1.endswith('o', 0, 5)) # 判断字符串 s1 中在索引值为0-5的范围内是否以 o 为后缀
True
False
True
S.lower()
--> 将字符串全部转为小写
s
中的大写英文字母转换为小写英文字母。若s
中没有大写英文字母,则返回的就是s
。返回值:返回转换后的字符串。需要变量接收。s1 = "Hello world"
print(s1.lower()) # 将 s1 中的字母全部转为小写
hello world
S.upper()
--> 将字符串全部转为大写
s
中的小写英文字母转换为大写字母,返回值:返回转换后的字符串。若s
中没有小写英文字母,则返回的就是s
。s1 = "hello world"
print(s1.upper()) # 将 s1 中的字母全部转为大写
HELLO WORLD
S.strip([chars])
--> 默认去掉字符串左右的空格
s
两边的字符chars
(类型为字符串),默认为空格,返回值:返回去除chars
后的字符串。需要变量接收。s1 = "hello world"
print(s1.strip()) # 默认为去掉 s1 左右的空格
print(s1.strip('d')) # 去掉 s1 左右两边的 d
hello world
hello worl
S.isalpha()
--> 判断字符串是否全为字母,返回的是bool
值
s
是否全为字母,返回值:布尔值,True
或False
。如果字符串s
中至少有一个字符并且所有字符都是字母,返回True
,否则返回False
,需要变量接收s1 = "hello world"
s2 = 'helloworld'
print(s1.isalpha()) # 判断 s1 是否全为字母
print(s2.isalpha()) # 判断 s1 是否全为字母
False
True
S.isdigit()
--> 判断字符串是否全为数字,返回的是bool
值
s
的字符是否全是是数字,返回值:布尔值,True
或False
。若s
字符全为数字,返回True
,否则返回False
,需要变量接收。s1 = '123'
s2 = '123abc'
print(s1.isdigit()) # 判断 s1 是否全为数字
print(s2.isdigit()) # 判断 s1 是否全为数字
True
False
S.isalnum()
--> 判断字符串是否全为数字或者字母,不存在特殊字符,返回的是bool
值
s
的字符是否全是全为数字或字母,返回值:布尔值,True
或False
。s
中至少有一个字符且如果S
中的所有字符都是字母数字,那么返回结果就是True
;否则,就返回False
s1 = '123abc'
s2 = '123+abc'
print(s1.isalnum()) # 判断 s1 是否全为字母或数字
print(s2.isalnum()) # 判断 s1 是否全为字母或数字
True
False
S.join(iterable)
--> 将序列中的元素以指定的字符连接生成一个新的字符串
s
作为分隔符分隔字符串iterable
,返回值:返回分隔后的字符串s1 = "hello world"
print(s1.join('123456'))
1hello world2hello world3hello world4hello world5hello world6
bt_1 = bytes('hello world', encoding='utf-8')
print(bt_1)
b'hello world'
在实际应用中,我们通常会将 bytes类型 与 str类型 做转换。
bytes
→str
bytes.decode()
str
→bytes
S.encode()
li = []
li1 = [1, 22, 333, '123']
print(li)
print(li1)
[]
[1, 22, 333, '123']
list()
来进行创建列表print(list('hello'))
['h', 'e', 'l', 'l', 'o']
注意:
str
len(list)-1
。li1 = [1, 22, 333, '123']
print(li1[3])
print(li1[-1])
123
123
li1 = [1, 22, 333, '123']
li1[2] = 444
print(li1)
[1, 22, 444, '123']
del
语句 或者 list.remove()
或者 list.pop()
进行删除li1 = [1, 22, 333, '123']
del li1[0] # 删除 索引值为 0 的元素
print(li1)
[22, 333, '123']
li1 = [1, 22, 333, '123']
li1.remove(1) # 移除列表中的元素 1
print(li1)
[22, 333, '123']
注意:remove()
是对值进行删除
li1 = [1, 22, 333, '123']
li1.pop() # 默认弹出最后一个元素
print(li1)
li1.pop(2) # 指定弹出索引值为 2 的元素
print(li1)
[1, 22, 333]
[1, 22]
li1 = [1, 22, 333]
li2 = [4444, 55555]
print(li1 + li2)
[1, 22, 333, '123', 4444, 55555]
in
进行判断li1 = [1, 22, 333]
print(1 in li1)
True
li1 = [1, 22, 333]
print(li1 * 2)
[1, 22, 333, 1, 22, 333]
li1 = [1, 22, 333]
li2 = [4444, 55555]
print(li1 * li2) # 列表与列表不能相乘
Traceback (most recent call last):
print(li1 * li2)
TypeError: can't multiply sequence by non-int of type 'list'
li1 = [1, 22, 333]
for i in li1:
print(i)
1
22
333
相当于快速取出每一个元素
li1 = [1, 22, 333]
li2 = [1, 2, 3, '4']
print(len(li1)) # 输出 li1 的长度即元素的个数
print(max(li1)) # 输出 li1 的最大元素(比较ascii码)
print(min(li1)) # 输出 li1 的最小元素(比较ascii码)
print(max(li2)) # int 与 str 不能作比较
3
333
1
Traceback (most recent call last):
print(max(li2))
TypeError: '>' not supported between instances of 'str' and 'int'
li2 = [1, 2, 3, 4, 5, 6, 2, 4, 1]
li2.sort() # 对 li2 进行排序默认升序
print(li2)
li2.sort(reverse=True) # 对 li2 进行降序排列
print(li2)
[1, 1, 2, 2, 3, 4, 4, 5, 6]
[6, 5, 4, 4, 3, 2, 2, 1, 1]
li2 = [1, 2, 3, 4, 5, 6, 2, 4, 1]
li2.reverse() # 将 li2 进行反转/逆序取出,没有返回值
print(li2)
[1, 4, 2, 6, 5, 4, 3, 2, 1]
slice(start, stop[, step])
切片模式:
a[start:stop:step]
start
为起始位置默认为0
stop
为结束位置默认最后一个元素
step
可选参数:步长,默认为1
li2 = [1, 2, 3, 4, 5, 6, 2, 4, 1]
print(li2[3:7:2])
'''
对列表 li2 进行切片
起始位置为索引值为3的元素,
结束位置为索引值为7的元素,
步长为2
'''
[4, 6]
注意:取值左闭右开
L.append(object)
--> 在列表末尾添加新的对象
li1 = [1, 2, 3, 4, 5, 6, 2, 4, 1]
li1.append(10) # 在列表末尾添加元素10
li1.append([10]) # 在列表末尾添加元素[10]
li1.append('hhhh') # 在列表末尾添加元素'hhhh'
print(li1)
[1, 2, 3, 4, 5, 6, 2, 4, 1, 10, [10], 'hhhh']
L.count(object)
--> 统计某个元素在列表中出现的次数,返回整数
li1 = [1, 2, 3, 4, 5, 6, 2, 4, 1, [3, 3, 3]]
print(li1.count(5)) # 统计元素5在列表中出现的次数
print(li1.count(2)) # 统计元素2在列表中出现的次数
print(li1.count(3)) # 统计元素3在列表中出现的次数
1
2
1
L.extend(iterable)
--> 用新列表扩展原来的列表
将列表元素直接扩展至原列表之后
li1 = [1, 2, 3, 4, 5]
li2 = [6, 7]
li1.extend(li2) # 将li2扩展至li1中
print(li1)
li1.extend([8, 9]) # 将[8,9]扩展至li1中
print(li1)
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
L.index(value)
--> 从列表中找出某个值第一个匹配项的索引位置
li1 = [1, 2, 3, 4, 5, 6, 2, 4, 1, [3, 3, 3]]
print(li1.index(2)) # 在列表li1中找到2的索引位置(第一个匹配项)
1
L.insert(index, object)
–> 将对象插入列表
li1 = [1, 2, 3, 4, 5, 6, 2, 4, 1, [3, 3, 3]]
li2 = [7, 8, 9]
li1.insert(6, li2) # 在列表索引值为6的位置插入li2
print(li1)
[1, 2, 3, 4, 5, 6, [7, 8, 9], 2, 4, 1, [3, 3, 3]]
L.pop([index])
--> 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
li1 = [1, 2, 3, 4, 5, 6, 2, 4, 1, [3, 3, 3]]
li1.pop(3) # 弹出列表li1中索引值为3的元素
print(li1)
li1.pop() # 弹出列表li1中的元素(默认最后一个)
print(li1)
[1, 2, 3, 5, 6, 2, 4, 1, [3, 3, 3]]
[1, 2, 3, 5, 6, 2, 4, 1]
L.remove(value)
--> 移除列表中某个值的第一个匹配项
li1 = [1, 2, 3, 4, 5, 6, 2, 4, 1, [3, 3, 3]]
li1.remove(4) # 移除列表li1中的元素4
print(li1)
li1.remove(3) # 移除列表li1中的元素3
print(li1)
[1, 2, 3, 5, 6, 2, 4, 1, [3, 3, 3]]
[1, 2, 5, 6, 2, 4, 1, [3, 3, 3]]
L.reverse()
--> 反向列表中元素
li1 = [1, 2, 3, 4, 5, 6, 2, 4, 1, [3, 4, 5]]
li1.reverse() # 反向列表li1中的元素
print(li1)
[[3, 4, 5], 1, 4, 2, 6, 5, 4, 3, 2, 1]
L.sort(reverse=False)
--> 对原列表进行排序
li1 = [1, 2, 3, 4, 5, 6, 2, 4, 1]
li1.sort() # 对列表进行排序
print(li1)
li1.sort(reverse=True) # 对列表进行排序后反向列表的元素
print(li1)
li1.sort(reverse=False) # 对列表进行排序
print(li1)
[1, 1, 2, 2, 3, 4, 4, 5, 6]
[6, 5, 4, 4, 3, 2, 2, 1, 1]
[1, 1, 2, 2, 3, 4, 4, 5, 6]
L.copy()
--> 复制列表
li1 = [1, 2, 3, 4, 5, 6, 2, 4, 1]
li2 = li1
li3 = li1.copy() # 把li1的复制赋值给li3
print(li1)
print(li2)
print(li3)
print(type(li1))
print(type(li2))
print(type(li3))
print(id(li1))
print(id(li2))
print(id(li3))
[1, 2, 3, 4, 5, 6, 2, 4, 1]
[1, 2, 3, 4, 5, 6, 2, 4, 1]
[1, 2, 3, 4, 5, 6, 2, 4, 1]
<class 'list'>
<class 'list'>
<class 'list'>
1754170372352
1754170372352
1754170268928
L.clear()
--> 清空列表
li1 = [1, 2, 3, 4, 5, 6, 2, 4, 1]
li1.clear() # 清空列表
print(li1)
[]
删除列表的元素用del
li1 = [1, 2, 3, 4, 5, 6, 2, 4, 1]
del li1[7] # 删除索引值为7的元素
print(li1)
[1, 2, 3, 4, 5, 6, 2, 1]
li1 = list('123456')
print(li1)
print(map(int, li1)) # map对象:映射,将li1中的每个元素传到了int()中,之后再返回
print(list(map(int, li1))) # 将map对象转为list呈现
['1', '2', '3', '4', '5', '6']
[1, 2, 3, 4, 5, 6]
tuple()
来进行创建元组。tu = ()
print(type(tu))
print(tuple('123456789'))
print(tuple('abcdef'))
<class 'tuple'>
('1', '2', '3', '4', '5', '6', '7', '8', '9')
('a', 'b', 'c', 'd', 'e', 'f')
tu1 = (123)
tu2 = (123,)
print(type(tu1))
print(type(tu2))
<class 'int'>
<class 'tuple'>
tuple.count()
/ tuple.index()
reversed()
,sorted()
tu1 = tuple("123456789123456")
print(tu1)
print(tu1[5]) # 输出元组中索引值为5的值
print(tu1[2:6]) # 切片,输出索引值2-6的元素(生成新元组对象)
print(tu1.count('2')) # 输出元组tu1中2的个数
print(tu1.index('4')) # 输出元组tu1中元素4的索引位置
print(tuple(reversed(tu1))) # 使用内置函数reversed进行元素反转排列
print(sorted(tu1)) # 使用内置函数sorted进行排序,注意这里返回值为列表并非元组
print(tu1[::-1]) # 切片在这里也同样适用
('1', '2', '3', '4', '5', '6', '7', '8', '9', '1', '2', '3', '4', '5', '6')
6
('3', '4', '5', '6')
2
3
('6', '5', '4', '3', '2', '1', '9', '8', '7', '6', '5', '4', '3', '2', '1')
['1', '1', '2', '2', '3', '3', '4', '4', '5', '5', '6', '6', '7', '8', '9']
('6', '5', '4', '3', '2', '1', '9', '8', '7', '6', '5', '4', '3', '2', '1')
tu1 = (1, 2, 3, 4, [1, 2, 3])
tu1[3] = 5 # 对元组第三个索引值的元素进行赋值
Traceback (most recent call last):
File "D:/python/stone/作业/2020-12-24.py", line 196, in <module>
tu1[3] = 5 # 对元组第三个索引值的元素进行赋值
TypeError: 'tuple' object does not support item assignment
仅在一级元素是元组时不允许修改,例如当一级为列表时允许修改
tu1 = (1, 2, 3, 4, [1, 2, 3])
tu1[4][2] = 5 # 对元组第四个索引值列表的第三个索引值进行赋值,在一级元素是元组时不允许修改
(1, 2, 3, 4, [1, 2, 5])
remove
,append
,pop
等方法.list
→ tuple
tuple(iterable)
tuple
→list
list(iterable)
tu1 = (1, 2, 3,)
li1 = list(tu1) # 将tu1转化为列表赋值给li1
print(li1)
print(type(li1))
tu2 = tuple(li1) # 将li1转化为元组赋值给tu2
print(tu2)
print(type(tu2))
[1, 2, 3]
<class 'list'>
(1, 2, 3)
<class 'tuple'>
(key:value)
的形式,根据 key
的值计算 value
的地址,具有非常快的查取和插入速度。它是一种 可变对象 ,所以支持修改、插入、删除等操作。{ key1 : value1, key2 : value2}
dict()
dict(**kwargs)
dict(mapping)
dic1 = {
'name': 'china', 'capital': 'beijing', 'population': '1.4 billion'}
dic2 = dict(name='china', capital='beijing', population='1.4 billion') # dict(**kwargs)键对值
dic3 = dict([('name', 'china'), ('capital', 'beijing'), ('population', '1.4 billion')]) # dict(mapping) 映射
print(dic1)
print(dic2)
print(dic3)
print(dic1 == dic2 == dic3)
{
'name': 'china', 'capital': 'beijing', 'population': '1.4 billion'}
{
'name': 'china', 'capital': 'beijing', 'population': '1.4 billion'}
{
'name': 'china', 'capital': 'beijing', 'population': '1.4 billion'}
True
注意:
key
必须是 不可变的对象,例如整数、字符串、bytes
和元组,但使用最多的还是字符串。 列表、字典、集合等就不可以作为 key
。同时,同一个字典内的 key
必须是唯一 的,但值则不必。list
类似,字典采用把 相应的键 放入 方括号 内获取 对应值 的方式取值。如果访问的值不存在则会报错.dic[exit_key]
dic1 = {
'name': 'china', 'capital': 'beijing', 'population': '1.4 billion'}
print(dic1['name'])
china
dic1 = {
'name': 'china', 'capital': 'beijing', 'population': '1.4 billion'}
dic1['the measure of area'] = '9.6 million square kilometers'
print(dic1)
{
'name': 'china', 'capital': 'beijing', 'population': '1.4 billion', 'the measure of area': '9.6 million square kilometers'}
key
赋值,后面的值会把前面的值 覆盖 掉。di1 = {
'a': '2', 'b': '4', 'c': '6'}
di1['c'] = '8'
print(di1)
{
'a': '2', 'b': '4', 'c': '8'}
del dic[exit_key]
或 dic.pop(exit_key)
di1 = {
'a': '2', 'b': '4', 'c': '6'}
del di1['b'] # 删除 b
print(di1)
{
'a': '2', 'c': '6'}
di1 = {
'a': '2', 'b': '4', 'c': '6'}
di1.pop('c')
print(di1)
{
'a': '2', 'b': '4'}
del dic
di1 = {
'a': '2', 'b': '4', 'c': '6'}
del di1
print(di1)
Traceback (most recent call last):
print(di1)
NameError: name 'di1' is not defined
dic.clear()
di1 = {
'a': '2', 'b': '4', 'c': '6'}
di1.clear()
print(di1)
{
}
D.get(k[,d])
--> 返回指定键的值,如果值不在字典中,则返回default值dic1 = {
'name': 'china', 'capital': 'beijing', 'population': '1.4 billion'}
print(dic1.get('name'))
print(dic1.get('names'))
china
None
D.items()
--> 以列表返回可遍历的(键, 值) 元组对dic1 = {
'name': 'china', 'capital': 'beijing', 'population': '1.4 billion'}
for key, value in dic1.items():
print(key, value)
name china
capital beijing
population 1.4 billion
D.keys()
--> 以列表返回字典所有的键dic1 = {
'name': 'china', 'capital': 'beijing', 'population': '1.4 billion'}
print(dic1.keys())
dict_keys(['name', 'capital', 'population'])
D.values()
--> 以列表返回字典所有的值dic1 = {
'name': 'china', 'capital': 'beijing', 'population': '1.4 billion'}
print(dic1.values())
dict_values(['china', 'beijing', '1.4 billion'])
li1 = ('name', 'capital', 'population')
li2 = ('china', 'beijing', '1.4 billion')
print(list(zip(li1, li2))) # zip对象:打包,将可迭代对象里的元素一一对应进行
[('name', 'china'), ('capital', 'beijing'), ('population', '1.4 billion')]