斜杠发展之python(数据类型篇)

146 阅读9分钟

前言

处于内卷时代下的半桶水前端开发,也迫于半桶水压力开始追寻另外一条属于自己的道,我在众多语言秘籍当中选择了python这条道。便想起通过博客形式更新自己对这个道的理解。不足之处,还请海涵。

字符串

所谓字符串就是由零或者多个字符组成的有序序列,在python当中也是较为常用的数据类型;

提示:在使用一些特殊符号同时需要使用到转义字符 (\) 且是不可变类型

切片与索引(类似js当中的字符串切割)

索引规则是:如字符n:则n[0]获取的是第一个字符,n[ len(n) -1 ]获取的是最后一个字符;反之n[-1]获取的是最后一个字符;n[-n]表示获取的是方向索引

字符串方法

在python当中也有相关的字符串方法来操作字符串

方法介绍使用
inin成员运算符,主要是用于判断一个字符串是否存在与另外一个字符或者字符串s1 = 'hello, world'
print('wo' in s1) # True
len获取字符串长度s1 = 'hello, world'
print(len(s1)) # 11
capitalize将字符串首字母转大写s1 = 'hello, world'
print(s1.capitalize()) # Hello,wordl
title将字符串每个单词首字母大写s1 = 'hello, world'
print(s1.title() # Hello,Wordl
upper将字符串全部转成大写s1 = 'hello, world'
print(s1.upper()) # HELLO,WORDL
lower将字符串全部转成小写s1 = 'hello, world'
print(s1.lower() # hello,world
find / rfindfind:从字符串的首字母从前往后查找目标字符串并返回对应的下标,没有的话返回-1
rfind:从字符串的首字母从后往前查找目标字符串并返回对应的下标,没有的话返回-1
s1 = 'hello, world'
print(s1.find('or')) # 8
index / rindexindex:从前往后查找目标字符串在对应字符串当中的下标
rindex:从后往前查找目标字符串在对应字符串当中的下标

s1 = 'hello, world'
print(s1.index('or')) # 8
startswith检查字符串是否是指定的字符串开头----返回的是布尔值s1 = 'hello, world!'
print(s1.startswith('He')) # False
isdigit/isalpha/isalnum检查字符串是否由数字字符串,字母字符串,数字和字母组成的字符组成。返回的是布尔值s1 = 'hello, world!'
print(s1.isdigit()) # False
print(s1.isalpha()) # True
print(s1.isalnum()) # False
center/rjust/ljust/zfill字符串格式化,当传入的字符宽度小于字符串本身宽度的时候,便不会对目标字符串进行格式化处理。center:对目标字符串居中并在量产 填充;rjust:从左侧进行填充;ljust:从右边进行填充;zfill:在字符串左侧进行补零s = 'hello, world'
print(s.center(20, '*')) # hello, world
print(s.rjust(20)) # hello, world
print(s.ljust(20, '~')) # hello, world~~~~~~~~
strip剪切字符串两端空格s = ' jackfrued@126.com \t\r\n'
print(s.strip()) # jackfrued@126.com
replace替换指定目标的字符串s = 'hello, world'
print(s.replace('o', '@')) # hell@, w@rld
split切割字符串,可指定切割方式默认情况下是对空格进行切割s = 'I love you' words = s.split()
print(words) # ['I', 'love', 'you']
join可指定字符串进行拼接s = 'I love you'
print('#'.join(words)) # I#love#you
encode/decode字符串编码/解码在python当中也有相关的字符串方法来操作字符串
方法介绍使用
inin成员运算符,主要是用于判断一个字符串是否存在与另外一个字符或者字符串s1 = 'hello, world'
print('wo' in s1) # True
len获取字符串长度s1 = 'hello, world'
print(len(s1)) # 11
capitalize将字符串首字母转大写s1 = 'hello, world'
print(s1.capitalize()) # Hello,wordl
title将字符串每个单词首字母大写s1 = 'hello, world'
print(s1.title() # Hello,Wordl
upper将字符串全部转成大写s1 = 'hello, world'
print(s1.upper()) # HELLO,WORDL
lower将字符串全部转成小写s1 = 'hello, world'
print(s1.lower() # hello,world
find / rfindfind:从字符串的首字母从前往后查找目标字符串并返回对应的下标,没有的话返回-1
rfind:从字符串的首字母从后往前查找目标字符串并返回对应的下标,没有的话返回-1
s1 = 'hello, world'
print(s1.find('or')) # 8
index / rindexindex:从前往后查找目标字符串在对应字符串当中的下标
rindex:从后往前查找目标字符串在对应字符串当中的下标

s1 = 'hello, world'
print(s1.index('or')) # 8
startswith检查字符串是否是指定的字符串开头----返回的是布尔值s1 = 'hello, world!'
print(s1.startswith('He')) # False
isdigit/isalpha/isalnum检查字符串是否由数字字符串,字母字符串,数字和字母组成的字符组成。返回的是布尔值s1 = 'hello, world!'
print(s1.isdigit()) # False
print(s1.isalpha()) # True
print(s1.isalnum()) # False
center/rjust/ljust/zfill字符串格式化,当传入的字符宽度小于字符串本身宽度的时候,便不会对目标字符串进行格式化处理。center:对目标字符串居中并在量产 填充;rjust:从左侧进行填充;ljust:从右边进行填充;zfill:在字符串左侧进行补零s = 'hello, world'
print(s.center(20, '*')) # hello, world
print(s.rjust(20)) # hello, world
print(s.ljust(20, '~')) # hello, world~~~~~~~~
strip剪切字符串两端空格s = ' jackfrued@126.com \t\r\n'
print(s.strip()) # jackfrued@126.com
replace替换指定目标的字符串s = 'hello, world'
print(s.replace('o', '@')) # hell@, w@rld
split切割字符串,可指定切割方式默认情况下是对空格进行切割s = 'I love you' words = s.split()
print(words) # ['I', 'love', 'you']
join可指定字符串进行拼接s = 'I love you'
print('#'.join(words)) # I#love#you
encode/decode字符串编码/解码

集合

所谓集合,就是多个数据类型集合在一起,集合具有:无序性,互异性,确定性。

提示:在使用求集合的时候都会对数据进行去重处理

方法介绍使用
{}创建集合字面量语法set1 = {1, 2, 3, 3, 3, 2}
print(set1) # {1, 2, 3}
set()集合构造器,在使用这个的时候会将重复的集合数据进行去重处理set2 = set('hello')
print(set2) # {'h', 'l', 'o', 'e'}
for in遍历集合数据set2 = set('hello')

for elem in set2 : print(elem)
in成员判断 set1 = {11, 12, 13, 14, 15}
print(10 in set1) # False
&/intersection获取两个集合的交集 set1 = {1, 2, 3, 4, 5, 6, 7} set2 = {2, 4, 6, 8, 10}
print(set1 & set2) # {2, 4, 6}
print(set1.intersection(set2)) # {2, 4, 6}
|/union获取两个并集set1 = {1, 2, 3, 4, 5, 6, 7} set2 = {2, 4, 6, 8, 10}
print(set1) # {1,2,3,4,5,6,7,8,10}
print(set1.union(set2)) # {1, 2, 3, 4, 5, 6, 7, 8, 10}
- / difference获取差集set1 = {1, 2, 3, 4, 5, 6, 7} set2 = {2, 4, 6, 8, 10}
print(set1 - set2) # {1, 3, 5, 7}
print(set1.difference(set2)) # {1, 3, 5, 7}
^ / symmetric_difference对差集(相当于两个集合的并集减去交集)set1 = {1, 2, 3, 4, 5, 6, 7} set2 = {2, 4, 6, 8, 10}
print(set1 ^ set2) # {1, 3, 5, 7, 8, 10}
print(set1.symmetric_difference(set2)) # {1, 3, 5, 7, 8, 10}
add()添加集合(去重)set2 = {1,2,3,4}
set2.add(5)
print(set2) # {1,2,3,4,5}
update()添加元素(去重)set2 = {1,2,3,4}
set2.update({1,2,7})
print(set2) # {1,2,3,4,7}
discard()删除指定的元素set2 = {1,2,3,4}
set2.discard(1)
print(set2) # {2,3,4}
remove()删除指定元素(且传入的元素必须包含在集合当中,不然会报错)set2 = {1,2,3,4}
if 1 in set2:
set2.remove(1)
print(set2) # {2,3,4}
pop()随机删除集合当中的一个元素set2 = {1,2,3,4}
print(set2.pop())
clear()清空集合当中的所有元素set2 = {1,2,3,4}
set2.clear()
print(set2) # {}
isdisjoint判断两个集合当中是否存在相同的元素set1 = {'Java', 'Python', 'Go', 'Kotlin'} set2 = {'Kotlin', 'Swift', 'Java', 'Objective-C', 'Dart'}
print(set1.isdisjoint(set2)) # False
frozenset不可变集合和set一样,且不能添加删除set1 = frozenset({1, 3, 5, 7})

list

列表是由一些列元素按照特定的顺序构成的数据序列,可以由任意的数据组成,且可以重复。

方法介绍用法
append在列表尾部添加元素-----list.append(event)items = ['Python', 'Java', 'Go', 'Kotlin']
items.append('Swift')
print(items) # ['Python', 'Java', 'Go', 'Kotlin', 'Swift']
remove删除指定元素:当删除的指定元素不存在的时候会抛出错误异常
pop删除指定索引元素 -----list.pop(evnet)
clear清空list元素--------list.clear()
index获取元素下标--------list.index(event,index)
sort元素排序 -----list.sort()
count获取指定元素出现的次数 ----list.count(event)
reverse元素反转(倒序) ------list.reverse()

tuple

元组:元组是python当中不可变的类型,且不能被操作修改。定义一元组可以可以通过(100,)('hello',)以上标识为元组注:在定义一个元组元素的时候必须逗号结尾。否则标识为常量值

方法介绍用法
len获取元组长度
in成员运算符t1 = (1,2,3,4)
print(100 in t1) # false
元组的使用之打包与解包(类似js当中的解构)

在解包时:如果两边长度不相等会报错;解决办法是通过*表达式 且在使用*解包的时候不能同时存在两个

#打包
a = 1,2,3
print(type(a)) <class 'tuple'>
print(a) # (1,2,3)
#解包
t1 = (1,2,4)
a,b,c = t1
print(a) #1
print(b) #2
print(c) #4
##############
t2 = ('a','b','c')
*a,b = t2
print(a) #['a','b'] 类型为list
print(b) # 'c'
##############
t3 = (1,2,3,4,5)
*a,*b,2 = t3 #报错

字典 (js当中的对象)

以下示例都为

students = {     1001: {'name': '狄仁杰', 'sex': True, 'age': 22, 'place': '山西大同'},     1002: {'name': '白元芳', 'sex': True, 'age': 23, 'place': '河北保定'},     1003: {'name': '武则天', 'sex': False, 'age': 20, 'place': '四川广元'} }
方法介绍用法
get(key)获取对应键对应的值print(students.get(1002)) # {'name': '白元芳', 'sex': True, 'age': 23, 'place': '河北保定'}
keys()获取字典当中的所有的key值print(students.keys()) # dict_keys([1001, 1002, 1003])
values()获取字典的所有值print(students.values()) # dict_values([{...}, {...}, {...}])
item()获取字典所有的键值对print(students.items()) # dict_items([(1001, {...}), (1002, {....}), (1003, {...})])
for in遍历字典
pop(key,default)删除对应key的键值,并返回该值,
default:当删除的key不存在时返回的值
stu1 = students.pop(1002)
print(stu1) # {'name': '白元芳', 'sex': True, 'age': 23, 'place': '河北保定'}
popitem()删除字典的最后一组键值对,返回值是一个二元组key, value = students.popitem() print(key, value) # 1003 {'name': '武则天', 'sex': False, 'age': 20, 'place': '四川广元'}
setdefault(key,default)获取当前键对应的值是否在字典当中,如果在返回对应的键对应的值,反之则用defaultr替代result = students.setdefault(1005, {'name': '方启鹤', 'sex': True}) print(result) # {'name': '方启鹤', 'sex': True}
print(students) # {1001: {...}, 1005: {...}}
update(obj)更新字典
del(key)删除字典当中的键对应得到值