数据类型
一、概述
Python中的数据类型,擅长领域不同。
要熟记各数据类型的结构。
1.整数
int
1 v = 15 2 3 print(v) 4 5 #当前十进制用二进制表示时,最少使用的位数 6 7 data = v.bit_length() 8 9 print(data)
2.布尔值
v1 = True # 1 ‘shjag’
v2 = False # 0 ‘’
3.字符串
str
1 v = ‘I am your father, son…#%¥#@1a’ 2 print(v)
4.列表
list
v = [‘a’,’b’,’c’] print(v)
5.元组
tuple
v = (11,"fff",334,4,99,10) print(v)
6.字典
v = {‘key’:‘value’}
由键:值这样的对构成。字典是无序的。主要用来存储数据。
字典的所有操作都紧紧围绕键key。
小王整理的小表1:
int |
bool |
str |
list |
tuple |
dict |
||
class method |
bit_length() |
√ |
|||||
逻辑运算 |
√ |
||||||
upper()、lower() |
√ |
||||||
strip() |
√ |
||||||
replace() |
√ |
||||||
split() |
√ |
||||||
capitalize() |
√ |
||||||
isdecimal() |
√ |
||||||
append() |
√ |
||||||
insert() |
√ |
||||||
reverse() |
√ |
||||||
get() |
√ |
||||||
items() |
√ |
||||||
keys() |
√ |
||||||
values() |
√ |
||||||
public method |
len() |
× |
× |
√ |
√ |
√ |
√ |
v[ ][ ] |
× |
× |
√ |
√ |
√ |
√ |
|
for |
× |
× |
√ |
√ |
√ |
√ |
小王整理的小表2:
str |
list |
tuple |
dict |
|
add |
× |
append() insert() |
× |
v.[‘key1’]=value |
del |
del(v) |
del(v[2]) del [2:4] del[0:4:2] |
× |
del v[‘key1’] |
change |
replace() upper()、lower() strip() split() capitalize() |
v[0] v[2:4] reverse() |
× |
v.[‘key1’]=value |
search |
v[0] v[0:2] v[0:4:2] |
v[0] v[2:4] v[2:4:2] |
v[0] v[2:4] v[0:4:2] |
v.get() v.keys() v.values() v.items( |
注:
逻辑运算:and or not
字符串类功能特点:字符串本身不发生变化。
列表:可以看成可变的容器。对它的操作会导致它本身发生变化。
元组:不可变的列表。增删改均被封印,只可以查看。
字典:字典的类功能基本是基于自身开发的,表中仅列举了4个方法。这也意味着它的公共功能也与其他数据类型在语法上的差异。
public method:对复杂的数据类型均可以进行操作,但使用时不同数据类型的使用方式略有不同,但本质都是一样的。索引中v[ ][ ]顾头不顾尾。第一个元素索引下标是0,最后一个元素索引下标是-1。
二、详解
1.class method
1)str‘‘
增
删
改
①upper() lower()
1 v1 = "wang" 2 3 value = v1.upper() 4 5 print(v1,value) 6 7 8 9 v1 = "waNg" 10 11 value = v1.lower() 12 13 print(v1,value)
②capitalize()
1 v1 = "waNg" 2 3 value = v1.capitalize() 4 5 print(v1,value)
③strip lstrip rstrip
1 v1 = " asd fasdf " 2 3 value = v1.strip() 4 5 print(v1) 6 7 print(value)
eg:
1 name = input("Please input a name :") 2 3 value = name.strip() 4 5 if value == ‘wang‘: 6 7 print(‘Success‘) 8 9 10 11 v1 = " asd fasdf " 12 13 value = v1.lstrip() 14 15 16 17 v1 = " asd fasdf " 18 19 value = v1.rstrip()
④replace
1 v1 = "SCII do something in standard the first time, but do something in standard is not easy…" 2 3 value = v1.replace("standard","**") 4 5 data = value.replace(‘the first time‘,‘#‘) 6 7 print(data)
⑤split
1 v1 = "SCII do something in standard the first time, but do something in standard is not easy…" 2 3 value = v1.split(‘the first time‘) # 列表类型 4 5 value = v1.split(‘standard‘) # 列表类型 6 7 value = v1.split(‘standard‘,2) # 列表类型 8 9 print(value)
小王解释:输出结果是多个字符串,要一起显示出来,不能是字符串str,所以用列表list。没键值对不用能用字典dict,有没必要用元组tuple。
⑥判断当前字符串中是否全部都是数字
1 v = "123" 2 3 val = v.isdecimal() 4 5 print(val)
Example:
1 count = 0 2 3 v = "abc123fsdfa3f" 4 5 for item in v: 6 7 if item.isdecimal(): 8 9 count += 1 10 11 print(count)
2)列表[ ]
①增
append()末尾插,在列表尾部追加一个值,修改本身值
1 v = [‘a‘,‘b‘,‘c‘] 2 3 v.append(‘Fuck!‘) 4 5 print(v)
Example:
1 v = [] 2 3 while True: 4 5 name = input("请输入用户名:") 6 7 if name == ‘q‘ or name == "Q": 8 9 break 10 11 v.append(name) 12 13 print(v)
1 v = [] 2 3 while True : 4 5 name = input("Please input a name :") 6 7 if name.lower() == ‘q‘ : 8 9 break 10 11 v.append(name) 12 13 print(v)
insert()随意插,在指定位置插入数据
1 v = [‘a‘,‘b‘,‘c‘,‘d‘] 2 3 v.insert(3,‘Fuck!‘) 4 5 print(v)
把连续位置元素替换为字符串
1 v = [‘a‘,‘b‘,‘c‘,‘d‘] 2 3 v[1:3] = ["Fuck!"] 4 5 print(v)
再次强调:
字符串的操作是新创建字符串
列表、字典则是直接对本身进行操作
②删
归在了public method里
③改
替换
1 v = [‘张勤学‘,‘成大经‘,‘成绩‘,‘刘龙华‘] 2 3 v[3] = "吴国胜" 4 5 print(v)
reverse()反转
1 v = [‘a‘,‘b‘,‘c‘,‘d‘] 2 3 v.reverse() 4 5 print(v)
④查
归在了public method里
3)元组()
无
4)字典{}
①增
v[‘kk1’] = 666
key不存在,则创建键值对
Example:
1 user_list = [ 2 3 {‘name‘:‘老头‘,‘age‘: 18}, 4 5 {‘name‘:‘流量‘,‘age‘: 66}, 6 7 {‘name‘:‘wifi‘,‘age‘: 99}, 8 9 ] 10 11 12 13 n = input("请输入姓名:") 14 15 a = input("请输入年龄:") 16 17 temp = {‘name‘: n, ‘age‘: int(a)} 18 19 user_list.append(temp) 20 21 for item in user_list: 22 23 print(item[‘name‘],item[‘age‘])
②删
del v[‘key1’]
③改
v[‘key1’] = 666
key存在则改
④查
v.get() v.keys() v.values() v.items()
根据key获取对应的值,key不存在默认取None
val = v.get(‘key1‘)
print(val)
2.公共功能
1)长度的计算
①字符串
1 v = "徐芳名sdf" 2 3 value = len(v) 4 5 print(value)
②列表
1 v = [‘a‘,‘b‘,‘c‘,‘d‘] 2 3 a = len(v) 4 5 print(a)
③元组
1 v = (‘a‘,‘b‘,‘c‘,‘d‘) 2 3 a = len(v) 4 5 print(a)
④字典
1 #查键值对的个数 2 v = { 3 ‘key1‘ : ‘value1‘, 4 ‘key2‘ : ‘value2‘, 5 ‘key3‘ : ‘value3‘ 6 } 7 8 val = len(v) 9 10 print(val)
2)索引的操作
①字符串str
增
删
改
查
根据“索引”“下标”
- 单个值:v[0]
- 多个值:v[起始位置:结束位置]
- 多个值:v[起始位置:结束位置:步长]
1 v = "ASCII第一次以规范标准的型态发" 2 3 value = v[0] 4 5 print(value)
1 v = "ASCII第一次以规范标准的型态发" 2 3 value = v[0:5] # 0 1 2 3 4 4 5 value = v[4:5] # 4 6 7 value = v[4:-1] # 4 8 9 value = v[4:] # 4 10 11 print(value)
1 v = "ASCII第一次以规范标准的型态发" 2 3 value = v[1:15:3] 4 5 print(value)
1 v = "ASCII第一次以规范标准的型态发" 2 3 le = len(v) - 1 4 5 value = v[le] 6 7 print(value)
Example:
1 v = "ASCII第一次以规范标准的型态发" 2 3 length = len(v) 4 5 index = 0 6 7 while True: 8 9 data = v[index] 10 11 print(data) 12 13 index += 1 14 15 if index == length: 16 17 break 18 19 20 21 v = "ASCII第一次以规范标准的形态" 22 23 i = 0 24 25 length = len(v) 26 27 while i <= length - 1 : 28 29 a = v[i] 30 31 print(a) 32 33 i += 1 34 35 else: 36 37 print(‘End‘)
注:字符串通过索引修改不了内容
字典和列表的元素可以被修改
②列表list
和字符串相似,可以通过索引取值
增,用到类方法
删
单个删除
1 v = [‘a‘,‘b‘,‘c‘,‘d‘] 2 3 del(v[3]) 4 5 print(v)
多个删除
1 v = [‘a‘,‘b‘,‘c‘,‘d‘] 2 3 del v[2:4] 4 5 print(v)
多个删除,带步长
1 v = [‘a‘,‘b‘,‘c‘,‘d‘] 2 3 del v[1:4:2] 4 5 print(v)
改
单个替换
1 v = [‘a‘,‘b‘,‘c,‘d‘] 2 3 v[3] = "e" 4 5 print(v)
多个替换
1 v = [‘a‘,‘b‘,‘c,‘d‘] 2 3 v[2:3] = ["eat"] 4 5 print(v)
注:此处增时要给列表,给字符串会导致循环添加
查
单个取值
1 v = [‘a‘,‘b‘,‘c‘,‘d‘] 2 3 a = v[2] 4 5 print(a)
多个取值
1 v = [‘a‘,‘b‘,‘c‘,‘d‘] 2 3 a = v[1:3] 4 5 print(a)
多个取值,带步长
1 v = [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘] 2 3 a = v[1:4:2] 4 5 print(a)
③元组
不可增删改,受保护的列表。仅保护一层,再深一层可能被改,比如元组里有列表。其他功能基本和列表一样。可以计算长度len(),可查看内容。
v[0]
v[0:4]
v[0:4:2]
print(v[0])
print(v[0:4])
print(v[0:4:2])
④字典
字典的增删改查必须用到键key
增
key不存在,则创建键值对
v[‘kk1‘] = 666
删
del v[‘key1‘]
改
key存在,则更新值
v[‘key1‘] = 666
查
val = v[‘key1‘]
print(val)
3)for循环
①字符串
循环,将对象中每个元素
1 v = "ASCII第一次以规范标准的型态发" 2 3 for i in v: 4 5 print(i)
②列表
1 v = [11,22,33,44,"蒋毅"] 2 3 for i in v: 4 5 print(i)
③元组
1 v = (11,22,33,44,"蒋毅") 2 3 for i in v: 4 5 print(i)
④字典
1 v = { 2 ‘key1‘ = ‘value1‘, 3 ‘key2‘ = ‘value2‘, 4 ‘key3‘ = ‘value3‘, 5 ‘key4‘ = ‘value4‘ 6 } 7 8 for i in v: 9 10 print(i) 11 12 13 14 for i in v.keys(): 15 16 print(i) 17 18 19 20 for i in v.values(): 21 22 print(i) 23 24 25 26 key,value 27 28 for i in v.keys(): 29 30 print(i,v.[i]) 31 32 for a,b in v.items(): 33 34 print(a,b)
三、嵌套
列表、元组、字典类型可以相互嵌套
1.列表
1. 列表中的元素可以是:数字,字符串,布尔值,列表
1 v = [11,22,[6,"88991",7],33,True,"蒋毅",55] 2 3 val = v[2][1][-1] 4 5 print(val) 6 7 8 9 v[3] = 66 10 11 print(v) 12 13 14 15 v[2][2] = 77 16 17 print(v) 18 19 20 21 v[2][1] = 666 22 23 print(v) 24 25 26 27 v[5] = v[5].replace(‘蒋‘,‘江‘) 28 29 v[5] = "江毅" 30 31 print(v) 32 33 34 35 v = "蒋毅" 36 37 v = v.replace(‘蒋‘,‘江‘) 38 39 print(v)
2.元组
可以进行嵌套
1 v = (11,22,[11,22,33],33,(9,1,2,"alex"),44) 2 3 v[2][1] = "xxxxx" 4 5 print(v) 6 7 v[2].append("asdasd") 8 9 print(v)
3.字典
1 val = { 2 3 ‘k1‘: 123, 4 5 ‘k2‘: "asdf", 6 7 ‘k3‘: True, 8 9 ‘k4‘: [11,22,33], 10 11 ‘k5‘: (1,2,3), 12 13 ‘k6‘: { 14 15 ‘kk1‘:‘vv1‘, 16 17 ‘kk2‘:‘vv2‘, 18 19 }, 20 21 ‘k7‘: [1,2,(8,6,2),{"k111":‘vvv1‘},5] 22 23 } 24 25 26 27 del val[‘k6‘][‘kk2‘] 28 29 val[‘k7‘][2] = 666 30 31 val[‘k7‘][3][‘k222‘] = ‘vv2‘
四、相互转化
1.str<一>int
a = int(‘0’)
type(a)
例:
加法计算器
1 v1 = input("请输入第一个值:") 2 3 v2 = input("请输入第二个值:") 4 5 v3 = int(v1) + int(v2) 6 7 print(v3)
2.bool<一>iint
False = 0
True = 1
所有非零整数都是True
例:
1 v = 1 2 3 val = bool(v) 4 5 print(val)
3.bool<一>istr
False = ‘’
True = ‘a’
所有非空str都是True
1 v = " " 2 3 val = bool(v) 4 5 print(val)
4.面试题:
题1:
1 a = 1 == 1 or 2 > 3 2 3 print(a)
题2:
1 a = False or 2 > 3 2 3 print(a)
题3:
1 a = 9 or 2 > 3 2 3 a = "asdf" or 2 > 3 4 5 a = 0 or 6 6 7 print(a)
五、延伸拓展
类
方法
属性
小王整理的小表1:
int |
bool |
str |
list |
tuple |
dict |
||
class method |
bit_length() |
√ |
|||||
逻辑运算 |
√ |
||||||
upper()、lower() |
√ |
||||||
strip() |
√ |
||||||
replace() |
√ |
||||||
split() |
√ |
||||||
capitalize() |
√ |
||||||
isdecimal() |
√ |
||||||
append() |
√ |
||||||
insert() |
√ |
||||||
reverse() |
√ |
||||||
get() |
√ |
||||||
items() |
√ |
||||||
keys() |
√ |
||||||
values() |
√ |
||||||
public method |
len() |
× |
× |
√ |
√ |
√ |
√ |
v[ ][ ] |
× |
× |
√ |
√ |
√ |
√ |
|
for |
× |
× |
√ |
√ |
√ |
√ |
小王整理的小表2:
str |
list |
tuple |
dict |
|
add |
× |
append() insert() |
× |
v.[‘key1’]=value |
del |
del(v) |
del(v[2]) del [2:4] del[0:4:2] |
× |
del v[‘key1’] |
change |
replace() upper()、lower() strip() split() capitalize() |
v[0] v[2:4] reverse() |
× |
v.[‘key1’]=value |
search |
v[0] v[0:2] v[0:4:2] |
v[0] v[2:4] v[2:4:2] |
v[0] v[2:4] v[0:4:2] |
v.get() v.keys() v.values() v.items() |