Python学习日记(四)——Python基本数据类型梳理(int、str、list、tuple、dict)

数字(int)

1、创建方式

n1 = 123
n2 = int(123)

2、内存分配

#共同用一个内存地址的情况
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

验证长度限制
>>> n2 = 2147483648
>>> n2
2147483648L

>>> n2 = 2147483647
>>> n2
2147483647

>>> n2 = -2147483648
>>> n2
-2147483648

>>> n2 = -2147483649
>>> n2
-2147483649L

#在python3中,没由long了,int自己就是无限大的
#后面有L代表着是长整型(Long),长整型的大小——内存有多大,数值就能多大

 

字符型(str)

1、创建方式

s1 = "deborah"
s2 = str('deborah')

2、特有功能

#strip     ()——两端去除空格
#startswith()——以什么什么开头
#endswith  ()——以什么结尾
#find      ()——找子序列,一个字符或多个字符都可
#replace   ()——将字符串中的某子序列替换成指定的值
#upper     ()——变大写(验证码)
#is...       ——判断是什么什么吗        

3、公共功能

  • 索引——只能取一个元素
  • 切片——可以取多个元素
    li = "deborah"
    print(li[2])
    #输出结果:b
    
    print(li[2:4])
    #输出结果:bo
    #还是字符
  • len——计算长度
      Python3中按字符来计算长度
  • for
      Python3中按字符来计算长度
  • for循环中的编码问题
    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的转换

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、创建方式

li = [11,22,33,44] 
li = list([11,22,33,44])

2、转换 

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、多层嵌套

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、特有功能

append ——追加,在原来列表中进行追加
clear  ——清除
extend ——批量增加,扩展自己,拿另外一个可迭代的东西(str、list、tuple、dict),扩展到自己里面来	
reverse——翻转,自己内部元素翻转
insert ——向指定位置插入指定元素

#什么时候会自身进行改变,什么时候会生成新的东西? #一般str字符串,执行一个功能,会生成一个内容,原来的内容不变 #list、tuple、dict,执行一个功能,自身会进行变化

5、公共功能

  • 索引
  • 切片
    li = ["ciri","ellie","prime",'123']
    print(li[2])
    #输出结果:prime
    print(li[2:3])
    #输出结果:['prime']
    #取出来的是列表,自己原来是什么类型,取出来的就是什么类型  
  • len

  • for

元组(tuple)  

1、创建方式

ages = (11, 22, 33, 44, 55)
ages = tuple((11, 22, 33, 44, 55))

2、特有功能

#count——计算元素出现的个数
#index——获取指定元素的索引位置

3、多层嵌套(元素不可修改) 

t = (11,22,["alex",{"k1":"v1"}])
print(t[2][1]['k1'])
#输出结果:v1

4、元组的特性——(元组的元素不可被修改,元素的元素 可以 被修改)  

  元组的——儿子不能变
  元组的——孙子可以变

5、嵌套修改

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、创建方式

person = {"name": "mr.hou", 'age': 18}
person = dict({"name": "mr.hou", 'age': 18})
person = dict(name='mr.hou',age=18)

通过列表创建字典

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、特有功能

#keys()  ——获取所有的键key
#values()——获取所有的值value
#items() ——获取所有的键值对
#pop()   ——获取并在字典中移除,可以传参数,移除指定的值
#get()   ——根据key获取值
#update()——更新

 

转载于:https://www.cnblogs.com/houzhaohui/p/7307413.html

你可能感兴趣的:(Python学习日记(四)——Python基本数据类型梳理(int、str、list、tuple、dict))