0
点赞
收藏
分享

微信扫一扫

【从零学Python_1.2】了解基础数据类型

  • int(整型)
  • float(浮点数)
  • complex(复数)
  • bool(布尔值)
  • str(字符串)
  • list(列表)
  • tuple(元组)
  • set(集合)
  • dict(字典)

int整型:

  • 整数,长度没有限制,能一直大到占满可用内存;
  • 数字之间可以加"_"分割,不影响数值,只是为了阅读方便。
num = 123_456_789
print(num) # 输出123456789
# 默认十进制
print(123) # 123
# 二进制0b开头
print(0b1010) # 10
# 八进制0o开头
print(0o157) # 111
# 十六进制0x开头
print(0x19A) # 410

float浮点数:

数字之间也可以加"_"分割,不影响数值,只是为了阅读方便。

a = 1.2         # 1.2
b = .12 # 0.12
c = 12. # 12.0
d = 1_2.3_4 # 12.34

complex复数:

写法:x + yj ,x 是实部,y 是虚部。

c = 1+2j
print(c) # (1+2j)

bool布尔值:

bool是int的子类,True==1,False==0,可以作为整型直接参与计算。

b1 = True
b2 = False
print(b1+b2, b1+5) # 1 6

str字符串:

  • 单行字符串表示方式:单引号('')或双引号("");
  • 多行字符串表示方式:开始和结尾都加三个单引号/双引号;
  • 单引号和双引号没有任何区别,表示的字符串值相等;
  • Python没有字符的概念,只有长度为1的字符串,'a' == "a",都是字符串。
str1 = '单行字符串'
str2 = "单行字符串"
str3 = '''
多行字符串
多行字符串
'''
str4 = """
多行字符串
多行字符串
"""

print(str1 == str2) # True
print(str3 == str4) # True

字符串加法:加号(+)可以把两个字符串连接为一个新的字符串;

字符串乘法:星号(*)可以把字符串拷贝指定数量并连接为一个新字符串;

print('hello ' + 'world')    # hello world
print('hello ' * 3) # hello hello hello

字符串索引:string[下标],正序从0开始,倒序从-1开始(-1就是最末尾一个字符,-2就是末尾倒数第二个字符);

st = 'hello'
print(st[0], st[1], st[-2], st[-1]) # h e l o

字符串截取:string[开始下标,截止下标],下标取左不取右,不包含截止下标本身,零和正数表示正序,负数表示倒序;

st = 'hello'
print(st[0:3], st[0:-2]) # hel hel

list列表:

有序的序列,序列中元素的类型可以不同,用方括号[*,*,*]标识,元素之间逗号(,)分割。

声明:

lst = ['0', 1, 2.3, True, 5]
lst = [] # 空列表
lst = list() # 空列表

索引和截取:

与string字符串同理,下标正序从0开始,倒序从-1开始,截取时下标取左不取右

(常规使用建议一个list只存放同一类型的元素)

lst = ['0', 1, 2.3, True, 5]

print(lst[0]) # 0
print(lst[-1]) # 5

print(lst[0:2]) # ['0', 1]
print(lst[1:-2]) # [1, 2.3]

加法和乘法:

与string字符串同理,加法可以把两个list连接为一个新的list;乘法可以把一个list拷贝指定数量并连接为一个新的list。

lst1 = [1, 2, 3]
lst2 = [4, 5, 6]

lst3 = lst1 + lst2
lst4 = lst1 * 2

print(lst3) # [1, 2, 3, 4, 5, 6]
print(lst4) # [1, 2, 3, 1, 2, 3]

dict字典:

无序的序列,元素是键值对(key, value),key必须唯一不能重复,必须使用不可变类型,通过key可以快速定位到value;

key的类型可以不同,value的类型也可以不同。用方括号[*,*,*]标识,元素之间逗号(,)分割,元素内冒号(:)分割key和value。

声明:

dic = {'name': 'xiaoming', 'age': 18}
dic = {} # 空字典
dic = dict() # 空字典

通过key索引到value:

str1 = dic['name']                  # 如果输入的key不存在,dic[]会报错
str2 = dic.get('name') # dic.get()不会报错
print(str1, str2, str1 == str2) # xiaoming xiaoming True

字典不支持加法和乘法

tuple元组:

与list序列类似,有序的序列,序列中元素的类型可以不同,用小括号(*,*,*)标识,元素之间逗号(,)分割。与list不一样的是,tuple元组是不可变类型,声明后就不能再更改,速度比list快。

声明:

tup = ('str', 1, 2, 3.4, 5.6)
tup = () # 空元组
tup = tuple() # 空元组
tup = (1,) # 一个元素的元组,后面要加逗号,不然会识别为int

索引和截取:

与list列表同理,下标正序从0开始,倒序从-1开始,截取时下标取左不取右

tup = ('str', 1, 2, 3.4, 5.6)

print(tup[0]) # str
print(tup[-1]) # 5.6

print(tup[0:2]) # ('str', 1)
print(tup[1:-2]) # (1, 2)

加法和乘法:

与list列表同理,加法可以把两个tuple连接为一个新的tuple;乘法可以把一个tuple拷贝指定数量并连接为一个新的tuple。 

tup1 = (1, 2, 3)
tup2 = (4, 5, 6)

tup3 = tup1 + tup2
tup4 = tup1 * 2

print(tup3) # (1, 2, 3, 4, 5, 6)
print(tup4) # (1, 2, 3, 1, 2, 3)

set集合:

无序且不重复的序列,序列中元素的类型可以不同,用花括号{*,*,*}标识,元素之间逗号(,)分割。

声明:

sett = {'0', 1, 2.3}
sett = set() # 空集合
# sett = {} 不能使用{},已被声明空字典占用

因为集合是无序的,声明后会自动去重;但是支持索引和截取,也不支持加法和乘法。

sett = {1, 1, 2, 2, 3, 3}
print(sett) # {1, 2, 3}

附1:

id():获取对象的唯一标识符(对象的内存地址),是一个整数;
type():获取对象的类型。

test = 123
print(id(test)) # 4417458224
print(type(test)) # <class 'int'>

附2:

定义:

不可变类型:数据不可以在原有内存上修改,修改后内存地址变化(数字、字符串、元组)

可变类型:数据可以在原有内存上修改,修改后内存地址不变(列表、字典、集合) 

 说明:

不可变类型示例:只能重新赋值修改数据,赋值后会改变内存

num = 1
print(id(num)) # 4354294000
num = 2
print(id(num)) # 4354294032

str1 = 'hello'
print(id(str1)) # 4355664944
str1 = 'world'
print(id(str1)) # 4356996976

tup1 = (1, 2, 3)
# tup1[0] = 4 # 报错,元组不允许修改

 可变类型示例:可以单独修改元素,修改元素后序列的内存不变;重新赋值后也会改变内存

lst1 = [1, 2, 3]
print(id(lst1)) # 4355635392
lst1[0] = 4
lst1[1] = 5
lst1[2] = 6
print(id(lst1)) # 4355635392
lst1 = [4, 5, 6]
print(id(lst1)) # 4355658880

附3:

int,float,str之间相互转换:

a = 12
stra = str(a)
floa = float(a)

b = 3.4
strb = str(b)
intb = int(b) # 只取整数部分,舍弃小数部分

c = '5'
d = '6.7'
intc = int(c) # 字符串本身只有数字,没有其他字符
flod = float(d) # 字符串本身只有数字和小数点,没有其他字符

附4:

对象的值作为布尔值用于计算,值为False的情况:

  • int整型、float浮点数、complex复数,值 == 0
  • str字符串、list列表、tuple元组、set集合、dict字典,值 == None 或 空序列

num1 = 0 num2 = 0.0 str1 = None str2 = '' lst1 = None lst2 = [] dic1 = None dic2 = {} tup1 = None tup2 = () set1 = None set2 = set()

num = 0
if num:
print(True)
else:
print(False)
# False

str1 = ''
if str1:
print(True)
else:
print(False)
# False

lst = []
if lst:
print(True)
else:
print(False)
# False


举报

相关推荐

0 条评论