python int 上限_Python基本数据类型 day2 知识点补充_mine

一、运算符

in

'helo' in 'adfwadbadfafsdfsd'

'li' in ['li','ok']

二、基本的数据类型

int

a.创建方式

n1 = 123 #根据int 类,创建了一个对象

n2 = int(123) #根据int 类,创建了一个对象 (内存使用此种方式,只要在类(int)后面加了括号就会自动调用_init_这个)

特有的功能在:

int类

功能1

功能2

功能3

_init_ (初始化,带下划线的可以先不看)

如: a = 123

a => int =>_int_(123)

b.int 内部优化

n1=123

n2=n1 这两种情况共用一个内存地址

s = '123alex' #只有包含数字时,才能转换

m=int(s)   报错

n1=123

n2=123这两种情况共用一个内存地址(这是python内部进行优化的-5~257)

+++++++++++++++++两份内存+++++++++++++++++++++++

-5~257

n1=123

n2=123

else:

n1=1234

n2=1234 这两种情况用两个内存地址,因为超出了-5~257范围

====> id(对象的内存地址 = id (对象或过对象的变量名))

查看对象的内存地址

查看内存地址:id (变量名)

查看字符串、数组长度:len(字符串、数组)

如 : id(n1)

c、长度限制

用int,超出了范围

32位系统 -2**31 ~ 2**31-1

64位系统-2*63 ~ 2**63-1

long

长度限制 long类型是Python int类型不够用的时候自动进行转换的,不需要人员干涉

long类型的长度是根据你的电脑配置来决定的,直到把你的内存耗光为止

如:9223372036854775808L L 表示long类型

123 表示int 类型 当长度不够是自动转换成long类型

三、字符串类型 str

a、创建方式

s1 = 'alex'

s1= str('alex')

s1 =str() 相当于 s1 ='' #创建空字符串

无参数,就是创建空字符串

一个参数,就是创建普通字符串

两个参数,int(字节,编码)=====》

a=123

m=str(a)# 将数字转化成字符串

b、特有功能 常用的部分功能

s1.strip() #两端去除空格

s1.startswith() #以..开头

s1.endswith() #以..结尾

s1.find() #找子序列 '12','H'

s1.replace() #将字符串中的某子序列替换成指定的值

s1.upper() #变大写

s1.lower() #变小写

s1.is.. #是什么什么吗

C、公共功能

索引:只能取出一个元素

切片:取出多个元素

如:

#!/usr/bin/env python

#-*- coding:utf-8 -*-

s2 = str('alex')

print (s2)

a1 = s2[0] #只提取一个元素 用索引

a2 = s2[0:3] #提取多个元素 用切片

print (a1)

print (a2)

len:

len ('李璐') 2.7是按照字节来算的

len ('李璐') 3.5是按照字符来算的

for:

py3.5 ==》循环的全是按照字符来进行的

py2.7 ==》循环的全是按照字节来进行的

注意:

UTF-8 编码,一个汉子,3个字节、 一个字节8位   0101010101

gbk编码的 一个汉子 两个字节

案列如下: 在python3.5 下运行

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#UTF-8 编码,一个汉子,3个字节 一个字节8位 0101010101

#gbk编码的 一个汉子 两个字节

#在python3.5 下运行

name = 'lilu'

for x in name:

print(x)

name='李璐'

#name = 'lilu'

for x in name:

print(x)

#在python3.5的输出结果如下: 因为循环的全是按照字符来进行的

# l

# i

# l

# u

# 李

# 璐

案列如下: 在python2.7 下运行

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#UTF-8 编码,一个汉子,3个字节 一个字节8位 0101010101

#gbk编码的 一个汉子 两个字节

name = 'lilu'

for x in name:

print(x)

name='李璐'

#name = 'lilu'

for x in name:

print(x)

#在python2.7的输出结果如下: 因为循环的全是按照字节来进行的

# C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/day2/day3/s2_ceshi.py

# l

# i

# l

# u

# �

# �

# �

# �

# �

# �

# 因为UTF-8 编码,一个汉子,3个字节,两个汉子就是6个字节,Python2.7按照字节来循环,因此出现六个乱码

编码、for:

1、python3.5 for 循环的时候,循环的每一个元素是'字符'

2、字符 =》 字节;

bytes_list = bytes ('字符串',encoding = 'utf-8')

utf-8 -》 3字节

gbk -》 2字节

print (bytes_list) #默认每一个字节都是16进制表示

for b in bytes_list:

print (b) #默认每一个字节都是10进制表示

3、10进制的数字 ==》 2进制

len

id

bin(10进制的数字) 案列如下:

#!/usr/bin/env python

#-*- coding:utf-8 -*-

# bin 将数字转换为二进制

b = 10

er_b = bin (b)

print (b,er_b) #10 0b1010

综合案列 一 、如下:

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#UTF-8 编码,一个汉子,3个字节 一个字节8位 0101010101

#gbk编码的 一个汉子 两个字节

name='李璐'

for x in name:

print(x)

bytes_list = bytes(x,encoding='utf-8') # bytes 可以将字符串转换字节 b'\xe6\x9d\x8e'(16进制 ) 转换成了字节

print (bytes_list)

for b in bytes_list:

print (b,bin(b))

#bin 表示转换成二进制

#字节默认是16进制 b'\xe6\x9d\x8e'(16进制 )

#输出每一个字节时是按照10进制进行展示 231 0b11100111

d、bytes和str的转换

综合案列 二 、如下: 字符和字节间相互转化

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#UTF-8 编码,一个汉子,3个字节 一个字节8位 0101010101

#gbk编码的 一个汉子 两个字节

#bytes #字节类型

#str(字节类型,编码) #字符串类型

a = '李璐'

#将字符串转换成字节

b1 = bytes(a,encoding= 'utf-8')

print (b1)

b2 = bytes (a,encoding='gbk')

print (b2)

#将字节转换成字符串

newa1 = str(b1,encoding='utf-8')

print (newa1)

newa2 = str(b2,encoding='gbk')

print (newa2)

#!/usr/bin/env python

#-*- coding:utf-8 -*-

s = 'alex'

s1_bytes = s.encode('utf-8') #编码 encode('utf-8') utf-8 是指定要编码成什么样的编码类型 转换为字节

print(s1_bytes)

s1_str = s1_bytes.decode('utf-8') #转换为字符串

print(s1_str)

s = 'alex'

s1_bytes = s.encode('gbk') #编码 encode('utf-8') utf-8 是指定要编码成什么样的编码类型 转换为字节

print(s1_bytes)

s1_str = s1_bytes.decode('gbk') #转换为字符串

print(s1_str)

总结如下:

凡是遇到 x = str () 或者 m = bytes() 两种情况

创建字符串

转换成字符串 需要知道编码

m = bytes()

创建字节

转换成字节 需要知道编码(要编程什么编码类型的字节)

str()

str类 _init_

四 、 list 列表 元素的'集合',列表  (它是可变元素的集合)

a、创建和转换

1、创建

li = [11,22,33,44]

li = list() (创建了一个空列表)

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

2、转换   #字符串,元组,字典 ===》列表

str -> 创建字符串,或者将其他的转换成字符串

list -> 创建列表,将其他元素转换成列表

案列一、如下:字符串转换成列表

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#字符串,元组,字典 ===》列表

#字符串转换成列表

s1 = '李璐'

# for 循环 字符 ===>只要可以进行for循环就是表示可迭代

li = list (s1) #for 循环,将循环的每一个元素,当做列表的元素

#['李','璐']

print (li)

案列二、元组转换成列表

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#元组转换成列表

# # for 循环 字符 ===>只要可以进行for循环就是表示可迭代

t2 = ('alex','laonanhai','seven')

l2 = list(t2)

print (l2)

案列三、字典转换成列表

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#字典转换成列表

dic = {

'k1':'alex',

'k2':'seven'

}

l3 = list(dic)

l4 = list(dic.values())

l5 = list(dic.items())

print (l3)

print (l4)

print (l5)

# C:\Python35\python.exe C:/Users/Administrator/PycharmProjects/day2/day3/s2_ceshi.py

# ['k1', 'k2']

# ['alex', 'seven']

# [('k1', 'alex'), ('k2', 'seven')]

b、列表特有功能

li = [111,22,3]

li.append() #追加

li.clear() #清楚

li.extend() # 扩展,批量增加 ,用另外一个可迭代的对象扩充到自己内部 (str ,list,dict,tuple 这些都可以迭代)

li.reverse() #翻转 自己内部元素翻转

li.insert() #向指定位置插入元素 如:li.insert(1,'x')

#!/usr/bin/env python

#-*- coding:utf-8 -*-

s = 'alex '

s.strip()

new_s = s.strip()

print (s)

print (new_s)

#extend 扩展

li = [111,22,3]

s = '李璐'

print (li)

li.extend(s)

print (li)

c、公共功能

li = ['alex','eric','seven',123]

索引:li[2]

切片:li[2:3]

for

len

如下:

#!/usr/bin/env python

#-*- coding:utf-8 -*-

li = ['alex','eric','seven',123]

print (li[2]) #取出的是字符

print (li[2:3]) #取出的是列表 用切片取出的时候,原来是什么,取出的结果集就是什么(因为li是列表,所以结果集是列表)

da = 'alex'

print (da[0]) #取出的是字符

print (da[0:3]) #取出的是字符 #取出的是字符 用切片取出的时候,原来是什么,取出的结果集就是什么(因为da是字符,所以结果集是字符)

#结果如下:

# seven

# ['seven']

# a

# ale

d、嵌套提取

li = ['alex','eric','seven',123]

li = ['alex',123,{'k1':'v1','k2':{'vv':(11,22,123),'ii':456}}]

思路如下:

li[2]-->{'k1':'v1','k2':{'vv':(11,22,123),'ii':456}}

li[2]['k2'] -->{'vv':(11,22,123),'ii':456}

li[2]['k2']['vv']-->(11,22,123)

li[2]['k2']['vv'][2]-->123

案列如下:

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#取出 (11, 22, 123) 里面的123

li = ['alex', 'eric', 'seven', 123]

li2 = ['alex', 123, {'k1': 'v1', 'k2': {'vv': (11, 22, 123), 'ii': 456}}]

n1 = li2[2] #提取出 {'k1': 'v1', 'k2': {'vv': (11, 22, 123), 'ii': 456}}

n2 = li2[2]['k2'] #提取出 {'vv': (11, 22, 123), 'ii': 456}

n3 = li2[2]['k2']['vv'] #提取出 (11, 22, 123)

n4 = li2[2]['k2']['vv'][2] #最终提取出 123

print (li2)

print (n1)

print (n2)

print (n3)

print (n4)

# li[2] -->{'k1': 'v1', 'k2': {'vv': 123, 'ii': 456}}

# li[2]['k2'] -->{'vv': 123, 'ii': 456}

# li[2]['k2']['vv'] -->(11, 22, 123)

# li[2]['k2']['vv'][2] -->123

list

list()

list 类 _init_

五、元组

a、 创建和转换

t = (11,22,33)

t = tuple ((11,22,33))

t = tuple ([])# 字符串、列表、字典 (接受可迭代的东西)

b、特有方法

count()

index

c、 嵌套 (元组的元素不可修改,但是元素的元素可修改 )

t = (11,22,33)

t = (11,22,['alex',{'k1':'v1'}])

t[2][1]['k1']--->'v1'

d、元组的特性。不可修改,谁不可被修改

元组,儿子不能变

元组,儿子不能变,孙子.....

案列一、如下:

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#元组

#tuple

t = (11,22,['alex',{'k1':'v1'}])

t3 = t[2]

print (t3) #t3是个列表 因为t3是个列表,因此可以追加

t3.append('xxx') #给t3列表追加 'xxx'

print (t)

案列二如下、

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#增加一个 k2:123

t = (11,22,['alex',{'k1':'v1'}])

temp = t[2][1]

temp = t[2][1]['k2']=123 # 方法一

t[2][1].update({'k3':'90'}) #用update方法进行更新 方法二

#temp['k2']=123

print (temp)

print (t)

总结:

一般字符串,执行一个功能,生成一个新内容,原来内容不变

list(列表),tuple(元组),dict(字典),执行一个功能,自身进行变化

六、字典

1、创建字典的 两种方式

案列一、创建字典的两种方式

#!/usr/bin/env python

#-*- coding:utf-8 -*-

a = {'k3':123} #方法一

a2 = dict(k1=123,qq=456) #方法二

print (a)

print (a2)

案列二、列表转换成字典

li = [11,22,33,44]

字典: key :10递加

value:列表的元素

dic = {}

for x ,v in enumrate(li,10):

dic[x]=v

new_dict = dict(enumrate(li,10))

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#列表转换成字典

li = [11,22,33]

new_dict = dict(enumerate(li))

new_dict2 = dict(enumerate(li,10))

print (new_dict)

print (new_dict2)

2、字典内部功能

keys()

values()

items()

pop()

fromkeys的用法  基本上不用

案列如下:

#!/usr/bin/env python

#-*- coding:utf-8 -*-

#fromkeys的用法

dic = {

'k1':123,

'k2':456,

'k4':111

}

#k1,k2,默认值alex fromkeys用来创建字典,直接用dict里面的key,如果没有直接添加,valus全是alex

n = dic.fromkeys(['k1','k2','k3'],'alex')

n2 = dic.fromkeys(['k1','k2','k3'],[]) # 这时k1,k2,k3全部执行的是同一个空列表

print (n)

print (n2)

n2['k1'].append('xxx') #因为k1,k2,k3全部指向同一个列表,所以一个有变化,都会变化

print (n2)

知识点整体回顾

一、回顾之前的内容

1、顶部

解释器

编码

2、编写第一个程序

print ('hello')

print 'world'

3、编码

ascil ->unicode -> gbk,utf-8.....

ascil - 一个字节,8位

Unicode -》 最少2个字节

utf-8 -》 3个字节一个中文,

gbk -> 2个字节一个中文

4、命名规则

首字母不是数字

变量名不能是关键字

变量由 数字、字母、下划线组成

5、 条件

if 条件:

pass

elif 条件:

pass

else:

pass

--注意缩进问题

6、while

while 条件:

pass

continue

break

7、运算符

num = 123

ret = num % 2 #余数

if ret ==0:

偶数

else:

奇数

num = 'alex'

li = ['alex','eric']

if num in li and num.startswit('a'):

print ('zai')

else:

print ('xxx')

8、基本数据类型

int ,整型

n =123

n=int(123) # int类的 _int_

s='123'

m=int(s)

s = '123alex' #只有包含数字时,才能转换

m=int(s)

str 字符串

s = 'abc'

s =str('abc')

a=123

m=str(a)# 将数字转化成字符串

===========================

bytes =>字节类型

str =》字符串

目的:字节=》字符串

b=字节类型

m=str(b,encoding='utf-8')

首字母变大写

去空格

变大小写

替换

是否为数字、字母

开头、结尾

查找

个数

格式化

编码 解码

居中

li = ['alex','sb']

li='_'.join(li)

#li对应的值 alex_sb

list 列表

li = ['alex','jack']

li=list[]

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

公共功能:

索引

切片

for

长度

enumrate

in

del li[0]

del li[0:2]

特有功能:

翻转

排序

追加

插入

索引位置

删除

个数

扩展

清除

元组

T =(11,22,33)

T =tuple(可迭代的对象)

li =[11,22,33,44]

m=tuple(li)

公共功能:

索引

切片

for

长度

enumrate

in

特有功能:

个数

索引位置

元组特性:

儿子不能被修改

字典:

d = {'k1':123,'k2':123}

d2 = {

'k1':123,

'k2':456

}

li = [11,22,33,44]

字典: key :10递加

value:列表的元素

dic = {}

for x ,v in enumrate(li,10):

dic[x]=v

new_dict = dict(enumrate(li,10))

公共功能:

索引:

增加 dic[key] = value

删除 del

for

长度

in

特有功能:

item 项

key 键

value 值

get

has_key =>

xxx in dic.keys()

update

clear

字符串,字节

str

bytes

a = '李杰'

==>gbk编码的字节

b = bytes(a,encoding = 'gbk') type(b)=>bytes

c= str(b,encoding ='gbk')

int 优化机制

a = 123

b = 123

#id(a) 看变量地址

#相同,因为有优化 -5~257

a = 123

b = a

d = {'k1':123}

#给字典增加值的两种方法

d.update ({'k2':123})

d['k2'] =123

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值