python 数据类型示例

发布于 2022-05-31  155 次阅读


python 数据类型

数据类型 是否有序 是否可重复 是否为序列 是否可变 转换函数
数值 Null Null int()、float()
字符串 str()
列表 list()
元组 tuple()
集合 set()
字典 键不可以重复 dict()

变量操作

变量删除
>>> a = 10
>>> b = 2
>>> del a,b
>>> print(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

数值类型

整数

num = 100
num = 0b100 # 二进制  转换函数 bin()
num = 0x100 # 十六进制  转换函数 hex()
num = 0o100 # 八进制  转换函数 oct()
示例:
# 十进制转八进制
print(oct(100))
# 十六进制转十进制
print(int(0x1AB))

浮点数

num = 1.5
num = 1.0

# 整数浮点数转换
print(float(10))
print(int(1.5)

数值类型方法

# 绝对值
>>> abs(-100)
100
# 上入整数
>>> import math
>>> math.ceil(4.2)
5
# 下舍整数
>>> math.floor(5.7)
5
# 最大值
>>> max([5,1,2,4,11])
11
>>> max('天生我材必有用,千金散去还复来') # 字符通过字符集编码来判断大小
','
# 最小值
>>> min(['a','c','b','d'])
'a'
# 四舍五入
>>> round(5.5)
6
>>> round(5.4)
5

随机方法

python 中的随机方法在random模块中

# choice 从序列中随机取值
>>> import random
>>> data = [10,15,21,3,6,18]
>>> random.choice(data)
21

# randrange 随机生成100以内偶数
>>> random.randrange(100)
78
>>> random.randrange(0,100,2)
8

# random 随机生成实数
>>> random.random()
0.19829756310532198

# shuffle 序列随机排序
>>> random.shuffle(data)
>>> print(data)
[3, 10, 18, 21, 6, 15]

# randint 随机生成数字
>>> random.randint(1,100)
53

字符串类型

字符串定义

# 空字符串
str = ''
# 单行字符串,单引号等同于双引号
str = 'hello world'
# 多行字符串
str = '''
hello
world
'''

索引切片

# 字符串中的文字叫做元素,对应的位置叫做索引或下标
>>> str = '君不见,黄河之水天上来,奔流到海不复回'
>>> # 打印下标为5的元素
... print(str[5]) # 因为下标从0开始,所以是第六个字符
河
>>> # 打印第一句
>>> print(str[0:3]) # 遵循左闭右开区间
君不见
>>> # 打印最后一句
>>> print(str[-7:]) # 从右向左数,从-1开始
奔流到海不复回
>>> # 打印下标为奇数的文字
>>> print(str[1::2])
不,河水上,流海复
>>> # 反向输出
>>> print(str[::-1])
回复不海到流奔,来上天水之河黄,见不君

格式化字符串

# format 方法
str = '我叫{},我今年{}岁了'.format('小明',18)
# 格式化字符串方法
## 字符串 %s 整数 %d 小数 %f
str = '我叫%s,我今年%d岁了' ('小明',18)
# f方法,推荐
name = '小明'
age = 18
str = f'我叫{name},我今年{age}岁了'

转义字符

# \n 换号  \t 制表符 \r 回车
print('你好\n\t我是小明\r我今年15岁了')

字符串方法

str = '落霞与孤鹜齐飞,秋水共长天一色'
>>> str = '落霞与孤鹜齐飞,秋水共长天一色'
>>> str.center(50,'*')
'*****************落霞与孤鹜齐飞,秋水共长天一******************'
# 查询一出现在字符串中的次数
>>> str.count('一')
1
# 字符串编码
>>> code = str.encode(encoding='gbk')
>>> print(code)
b'\xc2\xe4\xcf\xbc\xd3\xeb\xb9\xc2\xf0\xcd\xc6\xeb\xb7\xc9\xa3\xac\xc7\xef\xcb\xae\xb9\xb2\xb3\xa4\xcc\xec\xd2\xbb\xc9\xab'
# 字符串解码
>>> code.decode(encoding='gbk')
'落霞与孤鹜齐飞,秋水共长天一色'
# 判断字符串是否以某字符开头或结尾
>>> str.endswith('色')
True
>>> str.startswith('洛')
False
# 查找第一个出现一的位置,没有则返回-1
>>> str.find('一')
13

# 是否只包含数字和字母
>>> 'abc123'.isalnum()
True
# 是否只包含字母
>>> 'abcABC'.isalpha()
True
# 是否只包含阿拉伯数字
>>> '123456'.isdigit()
True
# 字母是否都是小写
>>> 'abc123.@#'.islower()
True
# 是否只包含数字符号
>>> '一①壹1'.isnumeric()
True
# 是否只包含空格
>>> '  '.isspace()
True
# 是否符合标题格式
>>> 'Hello World'.istitle()
True
# 字母是否都是大小
>>> 'ABC123'.isupper()
True

>>> str2 = '曾经沧海难为水,除却巫山不是云'
# 使用,分隔字符串元素
>>> ','.join(str2)
'曾,经,沧,海,难,为,水,,,除,却,巫,山,不,是,云'
# 计算字符串长度
>>> len(str2)
15
# 左对齐并填充
>>> str2.ljust(50,'#')
'曾经沧海难为水,除却巫山不是###################################'
# 右对齐并填充
>>> str2.rjust(50,'#')
'###################################曾经沧海难为水,除却巫山不是云'
# 大写字母转小写
>>> 'abcCDE'.lower()
'abccde'
# 小写字母转大写
>>> 'abcCDE'.upper()
'ABCCDE'
>>> '   删除左面空格'.lstrip()
'删除左面空格'
>>> '删除右面空格  '.rstrip()
'删除右面空格'

>>> str3 = '生当作人杰,死亦为鬼雄'

# 字符串替换
>>> str3.replace(',',',')
'生当作人杰,死亦为鬼雄'
>>> str3.replace(',',',').replace('鬼','[建国以后不能成精]') 
'生当作人杰,死亦为[建国以后不能成精]雄'

# 字符串分隔
>>> str3.split(',')
['生当作人杰', '死亦为鬼雄']
# 大转小,小转大
>>> 'ABCabc'.swapcase()
'abcABC'
# 标题化
>>> 'hello world'.title()
'Hello World'

# 字符映射转换表
>>> src = '我你'
>>> dst = 'IY'
>>> table = ''.maketrans(src,dst)
>>> table
{25105: 73, 20320: 89}
>>> '我想你了'.translate(table)
'I想Y了'

列表类型

列表操作

# 索引切片
>>> list1 = ['mysql','oracle','mariadb','redis','sqlserver']
>>> print(list1[0:2])
['mysql', 'oracle']

# 追加
>>> list1 + ['postgresql','sqlite']
['mysql', 'oracle', 'mariadb', 'redis', 'sqlserver', 'postgresql', 'sqlite']

# 删除第一个元素
>>> del list1[0]
>>> list1
['oracle', 'mariadb', 'redis', 'sqlserver']

# 求长度
>>> len(list1)
4

# 循环遍历
>>> for i in list1:
...     print(i)
... 
oracle
mariadb
redis
sqlserver

列表方法

# 追加元素
>>> database = ['mysql', 'oracle', 'mariadb', 'redis', 'sqlserver', 'postgresql', 'sqlite']
>>> database.append('redis')
>>> database
['mysql', 'oracle', 'mariadb', 'redis', 'sqlserver', 'postgresql', 'sqlite', 'redis']

# 计算某元素出现的次数
>>> database.count('redis')
2

# 将列表2追加到列表1
>>> database.extend(['memcache','oceanbase'])
>>> database
['mysql', 'oracle', 'mariadb', 'redis', 'sqlserver', 'postgresql', 'sqlite', 'mongodb', 'memcache', 'oceanbase']

# 计算某元素第一次出现的下标
>>> database.index('oracle')
1

# 插入到某位置
>>> database.insert(0,'mariadb')
>>> database
['mariadb', 'mysql', 'oracle', 'mariadb', 'redis', 'sqlserver', 'postgresql', 'sqlite', 'mongodb', 'memcache', 'oceanbase']

# 删除某元素并返回
>>> database.pop(-1)
'oceanbase'
>>> database
['mariadb', 'mysql', 'oracle', 'mariadb', 'redis', 'sqlserver', 'postgresql', 'sqlite', 'mongodb', 'memcache']

# 删除第一个mariadb
>>> database.remove('mariadb')
>>> database
['mysql', 'oracle', 'mariadb', 'redis', 'sqlserver', 'postgresql', 'sqlite', 'mongodb', 'memcache']

# 将列表顺序翻转
>>> database.reverse()
>>> database
['memcache', 'mongodb', 'sqlite', 'postgresql', 'sqlserver', 'redis', 'mariadb', 'oracle', 'mysql']

# 列表排序
>>> database.sort()
>>> database
['mariadb', 'memcache', 'mongodb', 'mysql', 'oracle', 'postgresql', 'redis', 'sqlite', 'sqlserver']

# 拷贝列表
>>> database2 = database.copy()
>>> database2
['mariadb', 'memcache', 'mongodb', 'mysql', 'oracle', 'postgresql', 'redis', 'sqlite', 'sqlserver']
>>> print(id(database),id(database2))
139772672287304 139772672286856

# 清空列表
>>> database2.clear()
>>> database2
[]