一、字符串
(一)字符串变量
- 字符串在计算机存储:实际是存储字符编码(ASII码),0127(其中031为控制字符)。Python中查看字符的ASII码值可以使用ord()函数。
- 求字符串长度:len()函数。
- 转义字符(\):主要是在定义字符串时,将一些有特殊含义的字符去除其特殊含义,表示没有特殊含义的字符。带特殊含义的字符:\n、\t(制表符,tab)、\r
- 字符串的拼接:”字符串1“ + “字符串2”。+ :字符串拼接运算符。
- 字符串的复制:复制多份以变长,“字符串” * 整数。
- 字符串的转换:str()。
- 字符串的提取:
- 提取某个字符,字符串[字符下标编号],编号为正则从左到右数,str[字符串编号(0,1,2……)],编号为负则从右到左开始数,str[字符串编号(……,-2,-1)]。
- 提取子字符串:str[字符起始编号:字符结束编号];字符起始编号留空表示最开始,字符结束编号留空表示最结尾。
- 带步长提取(字符串切片):str[字符起始编号:字符结束编号:步长];步长不写表示步长为1;步长为正数,起始编号要小于结束编号,则从左到由每隔一步长提取,步长为负数,起始编号要大于结束编号,则由右到左由每隔一步长提取。
- 字符串的查找:
- 字符串中是否有子串:子串 in 长串,返回值类型为bool类型。
- 查找子串的位置:find()方法,str1.find(str2),结果为子串第一次出现的首字符下标;rfind()方法,str1.rfind(str2),结果为子串最后一次出现的首字符下标。
- 查找子串在长串中出现的次数:count()方法,str1.count(str2)。
- 字符串输出格式:
- 格式控制字符串.format(对应的变量或值)方法,将字符串按某种规定的格式排列输出。
a = 10
b = 3.5
c = 'C'
#使用数字顺序占位
print("a={0},b={1}".format(a,b))
#输出结果:
#a=10,b=3.5
#命名占位 按名字赋值
print("a={valuea},c={valuec},b={valueb}".format(valuea = a,valueb = b,valuec = c))
#输出结果:
#a=10,c=C,b=3.5
- 格式化字符串,定义显示宽度,填充和对其方式。
定义显示宽度:
"{value1:填充字符+对其方式(<:左对齐,>:右对齐,^:居中对齐)+显示宽度(整数)+类型(d:整型,f:浮点型,s:字符串型)}".format(value1 = 值)
"现在时间:{valueh:02d}:{valuem:02d}:{values:02d}".format(valueh = h,valuem = m,values = s)
二、文件模式
- 输入:input(“输入提示”)函数:Python程序从终端获取输入的字符串,返回值为输入的内容。其中,输入提示,惠子啊用户输入前打印到终端上,提醒用户输入。
- 输出:print()函数。
- 注释:
- 单行注释:#
- 多行注释:三对双引号或单引号
#单行注释
"""
三对双引号进行多行注释
"""
'''
三对单引号进行多行注释
'''
练习:使用input()输入一个坐标:(x,y),然后提取其中的值:x = 15,y = 8,类型为int
代码:
#使用input()输入一个坐标:(x,y),然后提取其中的值:x = 15,y = 8,类型为int
a = input("请输入一个坐标:")
print("你输入的坐标是:{valuea}".format(valuea = a))
#查找","在字符串种的位置
b = a.find(",")
#提取x坐标和y坐标,并将其类型转换为int类型
x = int(a[1:b])
y = int(a[b+1:-1])
#输出x,y的数据类型
print("x的数据类型为:{0};y的数据类型为:{1}".format(type(x),type(y)))
#输出x,y的值
print("x={valuex},y={valuey}".format(valuex = x, valuey = y))
程序运行结果:
三、多数据类型
(一)列表
- 列表(list)概念:可以存放多个数据,这些数据按顺序排列,不限数据类型。
- 定义:列表名= [元素1……元素n]或者列表名= list([元素1……元素n])。列表在定义是可以定义为空列表。
- 访问列表元素:
- 取列表中的元素:list1[元素下标]
- 取列表中的子列表:list1[元素起始下标:元素终止下标]
提取子列表:list[元素起始编号:元素结束编号];元素起始编号留空表示最开始,元素结束编号留空表示最结尾。
带步长提取(列表切片):list[元素起始编号:元素结束编号:步长];步长不写表示步长为1;步长为正数,起始编号要小于结束编号,则从左到由每隔一步长提取,步长为负数,起始编号要大于结束编号,则由右到左由每隔一步长提取。
- 列表元素的修改、删除、追加和插入:
- 修改元素:列表名[元素下标] = 新值。
- 删除元素:
命令 | 功能区别 |
---|---|
del 列表名[元素下标] | 使用del进行删除元素,删除的是列表中指定的元素(del也可以删除变量,列表) |
列表名.remove(列表元素) | 使用remove进行删除元素,删除的是列表中第一次出现的元素 |
列表.pop(位置) | 删除指定位置的数据,如果没写位置,删除最后一个数据 |
- 添加元素:
命令 | 功能区别 |
---|---|
列表名.append(元素) | 在列表末尾新增元素 |
加法运算 | 把两个列表连接起来,但不修改原列表 |
列表名1.extend(列表名2) | 把列表2添加到列表1 |
乘法运算 | 把列表复制 |
列表名.insert(插入的位置下标,元素) | 在列表任意位置增加一个元素 |
- 判断列表中元素是否存在:元素 in 列表名,返回值为bool类型。
- 列表排序:列表名.sort():默认为升序排列,降序排列:列表名.sort(reverse = True)。
- 查找元素在列表中的位置:列表名.index(‘元素’)。
- 计算元素在列表中出现的次数:列表名.count(元素),返回值为整型。
- 求列表的长度:len(列表名)
(二)多维列表
- 概念:列表中的元素的数据类型为列表类型。
- 多维列表的存储问题:
- 引用存储:list1 = [list2,list2,list2]
- 拷贝存储:list2 = [list2[:],list2[:],list2[:]]
练习:学生信息列表
姓名 | 性别 | 年龄 | 学号 |
---|---|---|---|
张三 | 男 | 23 | 002 |
李四 | 女 | 18 | 003 |
Stundent1 = ["张三","男",23,"002"]
Stundent2 = ["李四","女",18,"003"]
StudentMessageList = [['姓名','性别','年龄','学号'],Stundent1,Stundent2]
print(StudentMessageList[0])
print(StudentMessageList[1])
(二)元祖
- 类似于列表,是只读的,不能修改。
- 元祖的定义:元祖名 = (元素1……元素n);可以创建空元祖,但是无意义。
- 关于元祖的操作和列表是类似的,但是不能对元祖的元素进行操作。
(三)字典
- 概念:以键值对的形式进行存储数据。字典数据没有顺序。
- 创建:字典名 = dict(键:值,键:值)或者字典名 = {键:值,键:值};可以创建空字典。
- 字典键(常量属性):字符串,整型,浮点型,bool类型、元祖。字典键不能重名。
- 字典值:任意类型,可以重复。
- 访问:通过字典键找到对应的值:字典名[“字典键”]。
- 取出一个字典中的所有键:字典.keys(),返回值:dicket_keys类型。
- 取出一个字典中所有的值:字典.values(),返回值类型:dict_values类型。
- 取出一个字典中所有的键和值:字典.items(),返回值类型:dict_items类型。
#如何访问 zhang3 同学的化学成绩?
zhang3 = {"成绩":{"语文":80,"数学":90,"理综":[60,70,25]}, "姓名":"zhang3"}
zhang3["成绩"]["理综"][1]
- 字典键值的添加、修改和删除:
- 添加:字典变量[新的键] = 值
- 修改:字典变量[键] = 新的值
- 删除:del 字典变量[键]
(四)集合
- 集合:将一些数据放到一起,没有顺序,不重复。
- 集合的定义:
- 变量名 = {} 空集
- 变量名 = set()
- 变量名 = {10,2.5,True,“hello”,(2,3)}
在集合中 bool类型 True == 1,False == 0
- 集合的相关算法:
- 求集合的交集:集合a & 集合b 结果是 集合
- 求集合的并集:集合a | 集合b 结果是 集合
- 求集合的差集:集合a - 集合b 结果是 集合
- 列表转集合 set(list)