python数据类型使用

数据类型

  • 数字类型 int float

用来记录数字相关的数据类型

# int 用来记录整数类型数据
# 如:年龄、年份、人数
age = 18  #等同于age = int(18)
year = 2020
count = 20

#float 用来记录带小数点的数据类型
# 如:工资、身高、体重
salary = 1800.29
height = 180.3
weight = 50.2


#数字类型使用
#数学运算
>>> a = 1
>>> b = 2
>>> c = a + b
>>> c
3

#比较大小
>>> a = 1
>>> b = 2
>>> a > b
False

  • 字符串类型 str
# 用来记录用户名、地址等描述性的数据
name = 'zhangsan'
address = '北京'

#使用
#可以用单引号、双引号、三引号定义字符串
#需要考虑引号嵌套问题
#内层使用单引号  外层就需要使用双引号
msg = "My name is zhangsan, I'm 18!"
msg = 'zangsan'
msg = '''
	君不见黄河之水天上来,奔流到海不复回。
	君不见高堂明镜悲白发,朝如青丝暮成雪。
	人生得意须尽欢,莫使金樽空对月。
	天生我材必有用,千金散尽还复来。
	烹羊宰牛且为乐,会须一饮三百杯。
	岑夫子,丹丘生,将进酒,杯莫停。
'''

# 字符串类型也可以相加或者相乘
>>> name = 'zhengsan'
>>> age = '18'
>>> name + age
'zhengsan18'
>>> name * 3
'zhengsanzhengsanzhengsan'

#按索引取值(正向取+反向取) :只能取
msg = 'hello world'
#正向取
print(msg[0])	# h
print(msg[3])	# l
#反向取
print(msg[-1])	# d

#切片操作
#顾头不顾尾
print(msg[0:5])		# hello

# 设置切片操作步长
# 取到下标 0 2 4
print(msg[0:5:2])	#hlo

#反向步长
print(msg[5:0:-1])	#' olle'

print(msg[:])  # hello world
#相当于
print(msg[0:11])  # hello world

#把字符串倒过来
print(msg[::-1])  #dlrow olleh



字符串内置方法

strip    # 移除左右两边的指定字符
str1.strip('*')

lstrip   # 只移除左边的指定字符
str1.lstrip('*')    

rstrip   # 只移除右边的指定字符
str1.rstrip('*')    

lower   # 将英文字符串全部变小写
 str2.lower()  
 
upper  # 将英文字符串全部变大写
str2.upper()  
 
startswith   #判断字符串是否以某个字符开头,结果为布尔值True或False
str3.startswith('t') 

endswith   #判断字符串是否以某个字符结尾,结果为布尔值True或False
 str3.endswith('t') 
 
split  #split会按照从左到右的顺序对字符串进行切分,可以指定切割次数
str5='1*2*3*4'
str5.split('*', 1) 

['1', '2*3*4']
 
rsplit  #rsplit刚好与split相反,从右往左切割,可以指定切割次数
str5='1*2*3*4'
str5.rsplit('*', 1)

['1*2*3', '4']
 
join   #从可迭代对象中取出多个字符串,然后按照指定的分隔符进行拼接,拼接的结果为字符串
'%'.join('hello')  
 
 'h%e%l%l%o'
 
replace   # 用新的字符替换字符串中旧的字符
str6.replace('a', 'b')


isdigit   # 判断字符串是否是纯数字组成,返回结果为True或False
str8 = '5201314'
True

find  #从指定范围内查找子字符串的起始索引,找得到则返回数字1,找不到则返回-1
print(msg.find('o'))  #返回要查找的字符串在大字符串中的起始索引
msg.find('o',1,3)  # 在索引为1和2(顾头不顾尾)的字符中查找字符o的索引

index  #同find,但在找不到时会报错
print(msg.index('o'))  #返回要查找的字符串在大字符串中的起始索引,找不到会报错
msg.index('e',2,4)

count  #统计字符串在大字符串中出现的次数
msg.count('e')  # 统计字符串e出现的次数
msg.count('e',1,6)  # 字符串e在索引1~5范围内出现的次数


center
>>> name='zhangsan'
>>> name.center(20,'-')  # 总宽度为20,字符串居中显示,不够用-填充
'------zhangsan------'

ljust
name.ljust(30,'*')  # 总宽度为30,字符串左对齐显示,不够用*填充
'**************************tony'

rjust
name.rjust(30,'*')  # 总宽度为30,字符串右对齐显示,不够用*填充
'**************************tony'

zfill
name.zfill(50)  # 总宽度为50,字符串右对齐显示,不够用0填充
'0000000000000000000000000000000000000000000000tony'


expandtabs
>>> name = 'tony\thello'  # \t表示制表符(tab键)
>>> name
tony    hello
>>> name.expandtabs(2)  # 修改\t制表符代表的空格数为2
tony  hello


captalize  #首字母大写
message.capitalize()


swapcase  #大小写翻转
message1.swapcase()  


print('abc'.islower())	#是否小写

print('ABC'.isupper())	#是否大写

print('Hello World'.istitle())	#是否每个单词首字母大写

print('123abc'.isalnum())  # 字符串是否是字母数字组成

print('abc'.isalpha())  # 字符串是否是字母组成

print('   '.isspace())  # 字符串是否是空格
  • 列表 list
#列表用来记录多条数据
name = ['zhangsan', 'lisi', 'wangwu']

#使用
# 可以根据列表对应的下标来获取对应的值
name = ['zhangsan', 'lisi', 'wangwu']
#正向取值
print(name[0])	#zhangsan
print(name[1])	#lisi
#反向取值
print(name[-1])	#wangwu

#修改值
name[1] = 33
print(name)  # ['zhangsan', 33, 'wangwu']



name = [['zhangsan',18, ['看电影','听音乐']], ['lisi', 19, ['篮球','足球']]]
print(name[0][1])  #18

print(name[0][2])   #['看电影', '听音乐']

print(name[0][2][0])   #看电影


#切片操作   顾头不顾尾
name = ['zhangsan', 'lisi', 'wangwu', 'aa', 'bb', 'cc', 'dd']

print(name[0:3])  # ['zhangsan', 'lisi', 'wangwu']

#设置步长为2    #0 2 4
print(name[0:5:2])  # ['zhangsan', 'wangwu', 'bb']

print(name[0:len(name)]) 
# ['zhangsan', 'lisi', 'wangwu', 'aa', 'bb', 'cc', 'dd']

print(name[:])  #
# ['zhangsan', 'lisi', 'wangwu', 'aa', 'bb', 'cc', 'dd']


#列表长度
print(len(name))    #7

#判断字符串是否存在列表中
print('aa' in name)  #True

#向列表中追加值
name.append('ssss')
print(name)   #['zhangsan', 'lisi', 'wangwu', 'aa', 'bb', 'cc', 'dd', 'ssss']

#向列表指定位置插入值
name.insert(0,'小明')   #['小明', 'zhangsan', 'lisi', 'wangwu', 'aa', 'bb', 'cc', 'dd']
print(name)



#删除
#没有返回值
del name[1]  #['zhangsan', 'wangwu', 'aa', 'bb', 'cc', 'dd']
print(name)

#有返回值
res=name.pop()  #不指定参数默认删除最后一个
print(res)    #dd

res =name.pop(1)
print(res)    #lisi

#根据元素删除
name.remove('zhangsan')  
print(name)  #['lisi', 'wangwu', 'aa', 'bb', 'cc', 'dd']

#匹配字符串的个数
print(name.count('zhangsan'))  #1  

#返回字符串所在的位置, 找不到就报错
print(name.index('aa'))   #3  

name.clear()  # 清空列表
print(name)  # []

#翻转列表
name.reverse()  #['dd', 'cc', 'bb', 'aa', 'wangwu', 'lisi', 'zhangsan']
print(name)

#排序
name.sort()  #排序  默认从小到大
name.sort(reverse=True)  #从大到小
  • 字典 dict
#用来存取key、value形式的数据
#造字典方式
#方式一:
dict = {'name': 'zhangsan', 'age': '18'}
#方式二:
d = dict(a=1, b=2, c=3)
print(d)    #{'a': 1, 'b': 2, 'c': 3}

#方式三
info=[
    ['name','zhansgan'],
    ('age',18),
    ['gender','male']
]
res=dict(info) # 一行代码搞定上述for循环的工作
print(res)

print(dict['name'])  #zhangsan
print(dict['age'])  #18

dict['k1']='aaa'  #key存在则修改,不存在则创建
print(dict)  #{'name': 'zhangsan', 'age': '18', 'k1': 'aaa'}
print(len(dict))  #2

#根据key判断是否存在
print('name' in dict)  #True
print('zhangsan' in dict)   #False

#删除元素
del dict['name']   #删除元素,没有返回值,有则删除,没有则报错
print(dict)

res = dict.pop('name')  #删除元素,有返回值,返回被删除元素的值,
print(res)  #zhangsan

res = dict.popitem()  #删除元素,返回元组
print(res)  #('age', '18')


#修改值
dict.update({'name':'lisi'})  #修改元素值
print(dict)   #{'name': 'lisi', 'age': '18'}

获取值
print(dict.get('name'))  #获取值,存在则返回值,不存在则返回None
print(dict['name'])   #获取值,存在则返回,不存在则报错

  • 布尔 bool
#用来记录真假两种状态
is_ok = True
is_ok  = False
  • 元组 tuple
#元组是一个不可变类型
t = (1, 1.3, 'aa')
print(type(t))   #<class 'tuple'>

t=(10,) # 如果元组只有一个元素,必须加上,逗号
print(t,type(t))

#类型转换
#字符串转元组
print(tuple('hello'))   #('h', 'e', 'l', 'l', 'o')

#列表转元组
print(tuple([1,2,3]))   #(1, 2, 3)

#字典转元组
print(tuple({'a1':111,'a2':333}))  #('a1', 'a2')


t = ('aa', 'bb', 'cc', 'dd', 'ee')
#正向取值
print(t[0])  #aa

#反向取值
print(t[-1])  #ee

#切片  顾头不顾尾
print(t[0:4])  #('aa', 'bb', 'cc', 'dd')
print(t[0:4:2])  #('aa', 'cc')
print(t[::-1])  # ('ee', 'dd', 'cc', 'bb', 'aa')
  • 集合 set
#定义: 在{}内用逗号分隔开多个元素
#集合内的元素必须为不可变类型
#集合内的元素无序
#集合内的元素不可重复

#定义空集合
s = set()  
s = {}  #默认是空字典

s = {1, 2, 3}
print(s, type(s))  #{1, 2, 3} <class 'set'>

s1 = {11, 22, 33, 44}
s2 = {33, 22, 55, 66}

# 取交集,两者共有的
print(s1 & s2)  # {33, 22}
print(s1.intersection(s2))  # 等价于上边   #{33, 22}

# 取并集/合集  两者所有的
print(s1 | s2)  # {33, 66, 11, 44, 22, 55}
print(s1.union(s2))  # 等价于上边

# 取差集  取s1独有的
print(s1 - s2)  # {11, 44}
print(s1.difference(s2))  # 等价于上边
# 取s2独有的
print(s2 - s1)  # {66, 55}
print(s2.difference(s1))  # 等价于上边

# 对称差集,取两个集合独有的,去掉共同的部分
print(s1 ^ s2)  # {66, 11, 44, 55}
print(s1.symmetric_difference(s2))  # 等价于上边

s1 = {11, 22, 33, 44}
s2 = {33, 22, 44}

# 父子集,包含的关系
print(s1 > s2)  # True
print(s1.issuperset(s2))  # True  # 等价于上边
print(s1 < s2)  # False
print(s1.issubset(s2))   #False  # 等价于上边

res = s1.isdisjoint(s2)
print(res)  #两个集合完全独立,没有共同部分则返回True

#去重
s1 = {11, 22, 33, 44, 22, 33, 11, 55, 66}
print(s1)  #{33, 66, 11, 44, 22, 55}

#无序
s1 = {11, 22, 33, 44, 55, 66}
print(s1)  #{33, 66, 11, 44, 22, 55}



#删除元素
s1 = {11, 22, 33, 44, 55, 66}

s1.discard(11)  #删除元素,不存在什么都不做,存在则删除
print(s1)

s1.remove(33) #存在则删除,不存在则报错
print(s1)

res = s1.pop()
print(res)
print(s1)

#修改字典
s1.update({77})  
print(s1)   #{33, 66, 11, 44, 77, 22, 55}

#插入元素
s1.add(2)
print(s1)


数据类型间的转换

# 字符串转 int
# 如果字符串包含了非数字之外的特殊符号则会报错
>>> str = '123'
>>> res = int(str)
>>> res
123
>>> type(res)
<class 'int'>

#字符串转float
>>> str = '12.9'
>>> res = float(str)
>>> res
12.9
>>> type(res)
<class 'float'>

# 进制转换
>>> bin(5)  #转二进制
'0b101'
>>> oct(10)  #转八进制
'0o12'
>>> hex(17)  #转十六进制
'0x11'

#######################
>>> int('0b101',2)  #二进制转十进制
5
>>> int('0o12',8)   #八进制转十进制
10
>>> int('0x11',16)   #十六进制转十进制
17

 str() 可以将任意数据类型转成字符串类型
>>> res=str({'a':1})
>>> print(res,type(res))
{'a': 1} <class 'str'>


#但凡能够被for循环遍历的类型都可以当做参数传给list()转成列表
print(list('hello'))	#['h', 'e', 'l', 'l', 'o']

print(list({'k1':11,'k2':22,'k3':33}))  #['k1', 'k2', 'k3']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值