Python学习日记(四)——Python基本数据类型梳理(int、str、list、tuple、dict)
数字(int)
1、创建方式
1 2 | n1 = 123 n2 = int ( 123 ) |
2、内存分配
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #共同用一个内存地址的情况 n1 = 123 n2 = n1 #用两个内存地址的情况 n1 = 123 n2 = 123 。。。。 n100 = 123 #如果有许多变量的值都相同,会造成浪费空间的问题 #在别的编程语言中都会占用两个内存地址,但是python进行了优化 #在 -5 ~ 257范围内的数,及时使用第二种写法,也会共同用一个内存地址 #查看内存变量地址:id(变量名) >>> n1 = 123 >>> n2 = 123 >>> id (n1) 47016816L >>> id (n2) 47016816L #可以看出内存地址是相同的 >>> n1 = 1234 >>> n2 = 1234 >>> id (n1) 52706152L >>> id (n2) 52706128L #可以看出内存地址是不相同的 |
3、长度限制
32位系统:-2**31 ~ 2*31 - 1
64位系统:-2**63 ~ 2*63 - 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 验证长度限制 >>> n2 = 2147483648 >>> n2 2147483648L >>> n2 = 2147483647 >>> n2 2147483647 >>> n2 = - 2147483648 >>> n2 - 2147483648 >>> n2 = - 2147483649 >>> n2 - 2147483649L #在python3中,没由long了,int自己就是无限大的 #后面有L代表着是长整型(Long),长整型的大小——内存有多大,数值就能多大 |
字符型(str)
1、创建方式
1 2 | s1 = "deborah" s2 = str ( 'deborah' ) |
2、特有功能
1 2 3 4 5 6 7 | #strip ()——两端去除空格 #startswith()——以什么什么开头 #endswith ()——以什么结尾 #find ()——找子序列,一个字符或多个字符都可 #replace ()——将字符串中的某子序列替换成指定的值 #upper ()——变大写(验证码) #is... ——判断是什么什么吗 |
3、公共功能
- 索引——只能取一个元素
- 切片——可以取多个元素
1234567
li
=
"deborah"
print
(li[
2
])
#输出结果:b
print
(li[
2
:
4
])
#输出结果:bo
#还是字符
- len——计算长度
Python3中按字符来计算长度 - for
Python3中按字符来计算长度 - for循环中的编码问题
1234567891011121314151617181920212223242526272829303132
name
=
"希里"
for
i
in
name:
print
(i)
bytes_list
=
bytes(i,encoding
=
'utf8'
)
#bytes()将字符串转换称为字节
print
(bytes_list)
#字节默认16进制
#for循环时,输出每一个字节默认用十进制显示
for
b
in
bytes_list:
print
(b,
bin
(b))
"""
输出结果
希
b'\xe5\xb8\x8c' #十六进制
229 0b11100101 #十进制 二进制
184 0b10111000
140 0b10001100
里
b'\xe9\x87\x8c'
233 0b11101001
135 0b10000111
140 0b10001100
"""
1
、python3中
for
循环时以字符为元素进行循环的
2
、字符
=
> 字节
bytes(
"字符串"
,encoding
=
'utf-8'
)
utf
-
8
=
> 汉字占三个字节
gbk
=
> 汉字占两个字节
print
(bytes_list)
#默认每一个字节都是16进制表示
for
b
in
bytes_list:
print
(b)
#默认每一个字节都是10进制表示
3
、
10
进制的数转换成二进制
bin
(
10
进制的数字)
4、bytes和str的转换
1 2 3 4 5 6 7 8 9 10 11 | a = "希里" #将字符串转换成字节 b1 = bytes(a,encoding = 'utf-8' ) b2 = bytes(a,encoding = 'gbk' ) print (b1) print (b2) #将字节转换成字符串 newa1 = str (b1,encoding = 'utf-8' ) print (newa1) newa2 = str (b2,encoding = 'gbk' ) print (newa2) |
列表(list)
1、创建方式
1 2 | li = [ 11 , 22 , 33 , 44 ] li = list ([ 11 , 22 , 33 , 44 ]) |
2、转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | class list ( object ): """ list() -> new empty list list(iterable) -> new list initialized from iterable's items """ #iterable可迭代的,可以被for循环就是可迭代iterable的 #1、字符串转换成为列表 s1 = "希里" l1 = list (s1) #list会执行for循环,将循环的每一个元素,当做列表的元素 print (l1) #输出结果:["希","里"] #2、元组转换成为列表 #元组可以被for循环,同理元组也可以转换成列表 t2 = ( "prime" , "ciri" , "ellie" ) l2 = list (t2) print (l2) #输出结果:['prime', 'ciri', 'ellie'] #3、字典转换成为列表 #字典 也可以被循环,所以字典也可以被转换成列表 dic = { 'k1' : "prime" , 'k2' : "ciri" } l3 = list (dic) print (l3) l3 = list (dic.values()) print (l3) l3 = list (dic.items()) print (l3) """ 输出结果: ['k1', 'k2'] ['prime', 'ciri'] [('k1', 'prime'), ('k2', 'ciri')] """ |
3、多层嵌套
1 2 3 4 5 6 7 8 9 10 | li = [ "123" , 123 ,{ "k1" : "ciri" , "k2" :{ "kk1" :( 11 , 22 , 123 ), "kk2" : "vv2" }}] print (li[ 2 ]) print (li[ 2 ][ "k2" ]) print (li[ 2 ][ "k2" ][ "kk1" ]) """ 输出结果: {'k1': 'ciri', 'k2': {'kk1': (11, 22, 123), 'kk2': 'vv2'}} {'kk1': (11, 22, 123), 'kk2': 'vv2'} (11, 22, 123) """ |
4、特有功能
1 2 3 4 5 6 7 8 | append ——追加,在原来列表中进行追加 clear ——清除 extend ——批量增加,扩展自己,拿另外一个可迭代的东西( str 、 list 、 tuple 、 dict ),扩展到自己里面来 reverse——翻转,自己内部元素翻转 insert ——向指定位置插入指定元素 <br> #什么时候会自身进行改变,什么时候会生成新的东西? #一般str字符串,执行一个功能,会生成一个内容,原来的内容不变 #list、tuple、dict,执行一个功能,自身会进行变化 |
5、公共功能
- 索引
- 切片
123456
li
=
[
"ciri"
,
"ellie"
,
"prime"
,
'123'
]
print
(li[
2
])
#输出结果:prime
print
(li[
2
:
3
])
#输出结果:['prime']
#取出来的是列表,自己原来是什么类型,取出来的就是什么类型
-
len
- for
元组(tuple)
1、创建方式
1 2 | ages = ( 11 , 22 , 33 , 44 , 55 ) ages = tuple (( 11 , 22 , 33 , 44 , 55 )) |
2、特有功能
1 2 | #count——计算元素出现的个数 #index——获取指定元素的索引位置 |
3、多层嵌套(元素不可修改)
1 2 3 | t = ( 11 , 22 ,[ "alex" ,{ "k1" : "v1" }]) print (t[ 2 ][ 1 ][ 'k1' ]) #输出结果:v1 |
4、元组的特性——(元组的元素不可被修改,元素的元素 可以 被修改)
元组的——儿子不能变
元组的——孙子可以变
5、嵌套修改
1 2 3 4 5 6 7 8 9 10 11 12 13 | t = ( 11 , 22 ,[ "alex" ,{ "k1" : "v1" }]) #更改元素的元素的值 t[ 2 ][ 1 ][ 'k2' ] = 123 print (t) #字典的更新1——update命令 dic = { 'k1' : 'v1' , 'k2' : 1 } dic.update({ "k3" : 123 }) print (dic) #字典的更新2——给不存在的键赋值 dic[ 'k4' ] = 'v4' print (dic) |
字典(dict)
1、创建方式
1 2 3 | person = { "name" : "mr.hou" , 'age' : 18 } person = dict ({ "name" : "mr.hou" , 'age' : 18 }) person = dict (name = 'mr.hou' ,age = 18 ) |
通过列表创建字典
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | li = [ 11 , 22 , 33 ] # new_dict = dict(li) # print(new_dict) # 会报错因为列表循环时只有一个值 #复杂方法 dic = {} for i,v in enumerate (li, 10 ): dic[i] = v print (dic) #一句话创建 new_dict = dict ( enumerate (li)) print (new_dict) |
2、特有功能
1 2 3 4 5 6 | #keys() ——获取所有的键key #values()——获取所有的值value #items() ——获取所有的键值对 #pop() ——获取并在字典中移除,可以传参数,移除指定的值 #get() ——根据key获取值 #update()——更新 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步