-
可变类型和不可变类型
其中可变类型的意义是,当数据的取值改变时,python并不会为它开辟一个新的内存去存放,而是直接在原来的内存地址即id中修改,相当于 数据还是在原来的内存空间中作出修改,并不会成为一个“见义忘利”的小人还是会知恩图报,回到最初创建它的地方因此这种人的待遇薪资自然是可以变化的(可变),并不会因为其他而跳槽。这样的类型主要是列表和字典
不可变类型的意义是,当用户改变了该数据的取值,python会为其开辟一个新的内存空间存放修改完的数据,看到新的空间后,该数据表示不想再回到原来的地址,想要来新地方了。像这种数据稍微给他点好处就搬走的,他的好处待遇自然就不应该得到变化(不可变),这样的类型主要是整型,浮点型,字符串类型等。
用代码就比较清晰地表示出来了:
- 列表
-
li1= ['1','2','3','4','5'] print(id(li1)) # 输出的是34088968 li1.append(444) print(id(li1)) # 输出的是34088968
-
整型
-
n = 99 print(id(n)) # 输出的是 1584101920 n += 1 print(id(n)) # 输出的是 1584101952
-
整数类型(Integer)
-
定义
-
kobe = 24 # kobe = int(24) print(kobe) # 输出24 int('abececafasf') int ('12.3') # 上面两个字符串中的内容都不属于整数类型 所以会报错
-
常用方法:进制的转换(2进制,8进制,16进制)
-
print(bin(20)) # 输出0b10100 print(oct(20)) # 输出0o24 print(hex(20)) # 输出0x14 # 十进制转换其他进制
-
print(int('1010',2)) # 输出10 二进制转十进制 print(int('1010',8)) # 输出520 八进制转十进制 print(int('1010',16)) # 输出4112 十六进制转十进制 #值得注意的是int()中的进制数必须是字符串类型,否则会被报错
-
字符串类型
-
常用操作
1. 按索引取值和切片
-
a = 'kobe bryant' print(a[6]) # 正向按索引取值 第一个字符为0 依次按字符增加索引 print(a[-4]) # 反向按索引取值 最后一个字符的index为-1,之后从右往左依次减1 print(a[0:2]) # 正向连续从第一个字符开始取一串字符,其中:后的数字代表着所要字符的长度 而且:前的数字务必是零 print(a[6:2:-1]) # 反向按索引取值,步长为-1,从索引值往后取 其中的2代表着切片操作截止的索引值所代表的字符
2. 长度
-
a = 'kobe bryant'、 print(len(a)) # 包含空格的长度 输出的是11
3. 成员运算 in or not in: 判断一个字符在不在目标字符串中;
-
print('kobe'in 'kobe bryant') print('ddddd' in 'kobe bryant') print('dddd' not in 'kobe bryant')
4.去掉字符串左右两边的字符strip 不管中间字符里的奇怪字符
-
a = '@@@@@kobe bryant$#@@#$$@#@$!%' print(a.strip('@ #$!%'))
5. split切分
-
a = 'name;age;height;weight;nationality' print(a.split(';')) # 将字符串中以;分隔的字符以列表的形式输出 ['name', 'age', 'height', 'weight', 'nationality']
6. 循环
-
n = 'kobe bryant' for item in n: print(item) # 依次单个输出字符串的每一个字符
-
内置方法
-
strip,lstrip,rstrip方法
-
print('@@@@@@@@kobe@@@@@@@@'.strip('@')) # 去除字符串中含有@的字符 kobe print('@@@@@@@@kobe@@@@@@@@'.lstrip('@')) # 去除字符串左边中含有@的字符 kobe@@@@@@@@ print('@@@@@@@@kobe@@@@@@@@'.rstrip('@')) # 去除字符串右边中含有@的字符 @@@@@@@@kobe
-
upper,lower方法
-
n = 'Kobe Bryant' ret = n.upper() #将字符串中的英文字母一律小写 res = n.lower() #将字符串中的英文字母一律大写 print(ret) print(res)
-
startswith,endswith方法
-
n = 'kobe bryant is a good basketall player' print(n.startswith('k')) # 判断一个字符串的首字母是否为内置方法指定的首字母 输出 True print(n.startswith('d')) # 输出 False print(n.endswith('r')) # 判断一个字符串的最后一个字母是否为指定的首字母 输出True
-
format的三种用法
-
print('kobe is a {} player, his age is {}'.format('basketball','40')) # 按顺序坐座位 先到先得 print('kobe is a {0} player, his age is {1}'.format('basketball','40')) # 按索引坐座位 有规可循 print('kobe is a {sports} player, his age is {number}'.format(sports='basketball',number='40')) # 按照标签内容坐座位
-
find,rfind,index方法
-
n = 'kobe bryant is a good basketall player' print(n.find('kobe')) # 在字符串中查找是否含有'kobe'的字符 如果有则输出0即为True 如果没有则输出-1则为False print(n.rfind('kobe')) # 从字符串的右边查找是否有'kobe'的字符 print(n.find('kobe',0,2)) # 从字符串的0位到2位查找是否含有kobe的字符 如果没有则输出-1,反之则输出0 print(n.index('o')) # 从左到右依次查找字符串内指定字符'o'的索引,先找到的第一个'o'立即输出其索引,不管之后有多少个o print(n.index('ood')) # 依次在指定字符串查找有'ood'字符(整体查找),找到后输出该字符的首字母索引
-
center,ljust,just,zfill方法
-
print('kobe'.center(50,'@')) # 以kobe字符为中心,用@字符填充其两边,使得输出的字符串中字符的个数达到50个 print('kobe'.rjust(50,"@")) # 将kobe字符放在右边,用@字符填充左边,使整个字符串的字符个数达到0个 print('222'.zfill(50)) # 在222字符的左边补充0,直至字符个数达到50个
-
expandtab方法
-
print('k obe'.expandtabs(5)) # 用5个空格填充
-
capitalize,swapcase,title方法
-
print('bryant'.capitalize()) # 字符串的首字母大写 print('BrYaNt'.swapcase()) # 字符串的每一个字母大写的换成小写,小写的换成大写 print('Kobe is a great player'.title()) # 每个单词的首字母大写
-
列表类型
-
l1= list('kobe bryant') print(l1) # 相当于for循环,将字符串中的字符依次放入列表 dic2 = list({'sport':'basketball','age':'40','championship':'5'}) print(dic2) # list只能识别字典中的key值,因此只能将key值放入列表
-
切片和索引取值方法
-
l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]] print(l1[2]) # 取出索引值为2的列表中的数据 l1[0] = 'kobe' # 对列表中索引值为0的数据进行替换 会改变原先list的内容 print(l1) print(l1[0:4:2]) # 从列表索引值为0到4,步长为2进行取值,有头没尾
-
长度和成员运算
-
l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]] print(len(l1)) # 输出列表的长度 即 元素的个数 print('spddt' in l1) # 判断想要查找的字符在不在列表里,输出布尔值
-
追加和插入值
-
l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]] l1.append('FMVP') # 在列表的最后加入值 print(l1) l1.insert(0,'Italy') # 在列表的索引值出加入字符 print(l1)
-
一次性插入多个值
-
l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]] l1.extend(['1',2,3]) # 在列表中插入多个值,看起来是列表但是插入的却是整数或者字符串 print(l1)
-
删除方法的几种方式
-
l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]] del(l1[2]) # 删除索引值所代表的的数据 由于列表是可变类型所以该方法会改变原先列表的 print(l1) delete = l1.remove([1,2,3,4]) # 删除所指定的数据,并且返回的是None 而不是列表,同样列表的内容被删除后也一样放在原先的地址里 print(l1,delete) res = l1.pop(-1) # 弹出(即返回)索引值所代表的数据,并删除,同样列表的内容一样变化 print(l1,res)
-
循环
-
l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]] for item in l1: print(item)