0%

python数据类型常见操作

三种与类型有关的运算id, type, isinstance

id(变量名) 获取变量内存地址

type(变量名)获取变量类型

isinstance(变量名,预测的数据类型)获取变量类型

举例

1
2
3
4
string = "hello, world"
print(isintance(string, str))
lis = [1, 2, 3]
print(isinstance(lis, str))

type(变量名)获取变量的数据类型,它不会认为子类和父类是相同的数据类型 isinstance(变量名,预测的数据类型)预测变量是什么类型,它会认为子类和父类是相同

Number常用的模块

math(import math)

求绝对值

1
print(math.fabs(-5))

向上取整 math.ceil(3.1)

向下取整 math.floor(3.9)

求平方 math.pow(2, 3)

同时求整数部分和小数部分 math.modf(12.999)

1
print(math.modf(12.9999))

求正弦 math.sin(3)

random(import random)

生成0 ~1 之间随机数 random.random()

生成指定范围的随机数(左闭右开) random.randrange(1, 100)

生成指定范围的一个整数(左闭右闭) random.randint(0, 10)

返回随机一个元素 random.choice()

1
2
lis = ["小明", "小红", "小芳"]
name = random.choice(lis)

随机打乱序列里面元素

1
2
3
li = ['一个水杯','一台电脑','一支笔','一副眼镜','一件风衣']
random.shuffle(li)
print(li)

随机获取部分元素

1
2
3
4
str = '0123456789abcdefghijklmnopqrstuvwxyz'
res = random.sample(str,6)
for r in res:
print(r,end='')

字符串

切片(语法格式:[开始值:结束值:步长])

1
2
3
# 从最后一个开始从后两个两个往前
name = 'lishi'
print(name[::-2])

find:检测子字符串是否包含在母字符串中,如果是返回开始元素的索引值,否则返回-1

index:跟find方法一样,只不过如果str不在myStr中,直接报错

count:返回子字符串在start和end的母字符串中出现的次数

isalpha:判断一个字符串是不是全是字母

isdigit:判断一个字符串是不是全是数字

replace:把母字符串中str1(旧元素)替换为str2(新元素),如果指定了count,则替换不超过count次

但是string并没有修改

split: 分割,以str为分隔符切片母字符串, 返回的是列表(分割后的每一个元素作为列表中的元素(String)

1
2
string = "hello, world, python"
print(string.split(","))

join:用指定字符将列表中元素连接成一个字符串,其中指定字符串加在列表中元素后面

获得字母的ASCII码

ord()用来返回一个字母的ASCII码

chr()相当于逆运算

空格

.lstrip()删除字符串左空格
.rstrip()删除字符串右空格
.strip()删除两端空格

对齐

.ljust(width):左对齐并用空格填充到长度为width
.rjust(width):右对齐并用空格填充到长度为width
.center(width):居中并用空格填充到长度为width

列表

append(在末尾插入)

insert(在指定位置插入,这个指定位置是插入后这个元素在新列表中的位置)

del(根据下标删除)

pop(删除最后一个元素)

remove根据元素的值删除

1
2
3
4
5
international = ['中国','韩国','日本','美国']
del international[2]
international.pop()
international.remove('韩国')
print(international)

in(判断一个元素在不在列表中)

count(计算一个元素在列表中个数)

index(得到列表中一个元素下标)

改:直接通过下标修改

求一个列表中最大值和最小值:max(list)和min(list)

exercise1

1
2
3
4
练习:
一个学校,有3个办公室,现在有8个老师['张学友','刘德华','黎明','郭富城','王菲','张柏芝','张韶涵','杨颖']等待分配工位,请编写程序,完成随机分配
要求:
办公室的编号,人数 具体是谁

Answer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import random
name = ['张学友','刘德华','黎明','郭富城','王菲','张柏芝','张韶涵','杨颖']
room = [[], [], []]
for i in range(8):
indexPeople = random.randint(0, len(name) - 1)
indexRoom = random.randint(0, 2)
room[indexRoom].append(name[indexPeople])
del name[indexPeople]
for i in range(3):
print(f"办公室编号: {i}\t 人员组成: ", end = "")
for j in range(len(room[i])):
print(room[i][j], end = " ")
print()

元组

字典

创建

直接用{}创建空字典

1
dic = {}

查找

通过键查询值:直接将键作为“下标”

get函数

不确定字典中是否存在某一个键而又想获取它的值,可以使用get(),设置默认值,如果不存在就返回默认值

1
2
stu_info = {'name':'张三丰','age':30,'no':110}
print(stu_info.get("address", "不存在"))

修改

修改元素的值:直接通过查找到的键来修改

1
2
3
# 字典变量名[对应键名] = 新的值
stu_info = {'no':110,'name':'张三','age':20}
stu_info['age'] = 18

添加元素:变量名["键"] = 数据(如果对应的键不存在会自动创建)

1
stu_info['mobile'] = 13248301214

删除元素

删除指定键的元素或整个字典:del

1
2
del dic['age']
del dic # 整个字典从内存中释放

清空整个字典

1
dic.clear()	# 字典内容被清空,字典依然存在

遍历

获取字典中键值对的数量:len

1
len(dic) 

.keys():获取字典中由键组成的列表

1
2
3
allKeys = dic.keys()
for elem in allKeys:
print(elem, end=' ')

.values():获取字典中由值组成的列表

1
2
3
allValues = dic.values()
for elem in allValues:
print(elem, end=' ')

items():返回一个包含所有(键 值)元祖的列表

1
2
for key, value in dic.items():
print(key, value)

集合

创建

set( )函数创建,( )里面可以是字典,列表,元组

大括号创建

集合运算

交 &

并 |

差 -

生成器

创建

列表推导式、

语法:

1
new_list = [expression for item in iterable if condition]
  • expression: 定义列表元素的表达式。
  • item: 迭代变量,表示来自 iterable 的当前元素。
  • iterable: 可迭代对象,例如列表、元组、字符串等。
  • condition(可选): 过滤条件,用于筛选元素。

expression中的变量和item中一致i,expression表示的是最终的返回值

举例

1
list = [x * x for x in range(10)]

生成器

1
2
generator = (x*2 for x in range(5))
print(generator)

生成器每次返回的是一个算法,每使用一次next函数就可以获取一个元素值, 直到最后一个元素值,

也可以直接用for

1
2
for item in generator():
print(item)

yield

举例:构造斐波那契数列

1
2
3
4
5
6
7
8
9
10
11
def febo(n):
i = 0
a, b = 0, 1
while i < n:
yield b
a, b = b, a + b
i += 1

generator = febo(5)
for item in generator:
print(item)

yield关键字类似于return关键字,每次迭代遇到yield返回后面的一个元素, 下次再迭代时候,从上一次yield结束位置后面继续执行

迭代器

迭代对象

一类:str list tuple dict set 二类:生成器

这些可以直接作用与for循环的对象的统称 ----》迭代对象 : Iterable

迭代器

可以被next()函数调用并且不断的返回下一个值的对象----》迭代器 Iterator