元组
文章目录
一、认识元组
1、元组tuple
元组是容器型数据类型;将()作为容器的标志,里面多个元素用逗号隔开︰(数据1,数据2,数据3,...)
元组是不可变的(不支持增删改);有序的(支持下标操作)
元素:没有要求
a. 元组可以为空
b. 只有一个元素的元组在表示的时候必须在唯一的元素后面加上逗号
c. 在没有歧义的情况下,元组的()
可以省略,直接用逗号将数据隔开
#空元祖
t1=()
# 只有一个元素的元组
t2=(10,)
# 省略括号()
t3=1,2,3
print(t3,type(t3),len(t3)) # (1, 2, 3) <class 'tuple'> 3
d. 解包 使用多个变量直接获取元组、列表中的多个元素
# 方法1
t4 = (10, 'a', '98')
print(t4[0], t4[1], t4[2]) # 10 a 98
# 方法2
x, y, z = t4
print(x, y, z) # 10 a 98
e. 元组就是不可变的列表 不能增加删除修改
字符串
一、认识字符串
1、字符串
a.字符串是容器型数据类型(字符串对应的容器只能保存多个文字符号-字符),将''或者""
作为字符串的标志。
b.字符串不可变(不支持增删改);字符串有序(支持下标)
c. 元素:引号中每个符号都是字符串的元素(任何文字符号都可以是字符串的元素),字符串的元素又叫字符
注意:字符串的元素(字符)分为两种:普通字符、转义字符
str1='abc'
str2="abc"
# 多行字符串
str3='''abc'''
str4="""abc"""
多行注释只有在特定的位置上才是注释
字符串不可变,所有可变的操作都是在创建对应的新的字符串
str1='abv'
new_str=str1.upper()
print(new_str) # ABV
字符串有序
print('abv'=='abc') # False
2、字符
字符:字符串中给每个独立的符号就是字符
2.1、转义字符
转义字符是由\
和一个或者多个字符组合而成;在特定的字符前加上\
,这个字符就具有特殊的功能或者特殊的意义
str1='\t'
print(str1)
常见的转义字符
\n | \r | \t | \\ | \' | \" |
---|---|---|---|---|---|
换行 | 回车 | 水平制表相当于tab键 | 代表一个反斜线字符 | 代表一个单引号 | 代表一个双引号 |
str1='It\'s me!'
print(str1) # It's me!
2.2、r字符串
在字符串的引号前加R或者r
如果表示字符串的时候在字符串前面加R或者r
可以让字符串中所有的转义字符的转义功能消失
str2='\tabc\n123'
str3=r'\tabc\n123'
print(str2)
print(str3)
'''
abc
123
\tabc\n123
'''
3、编码字符(所有的字符都可以表示成编码字符)
3.1
\u
是四位的十六进制数
\xhh | \0dd |
---|---|
1-2位十六进制数 | 1-2位八进制数 |
\x61 | \071 |
2进制数 | 8进制数 | 10进制数 | 16进制数 |
---|---|---|---|
由0和1组成的数 | 由0~7组成的数字 | 由0~9组成的数 | 由09和(af)A~F组成的数字 |
1001 1100 | 345 723 | 18 92 | 1f abc 4e00 0ff |
3.2、字符编码
计算机存储数据只能存储数字,计算机只具备存储数字的能力
为了能够让计算机保存文字信息,就给每一个文本符号对应一个固定的数字,每次在需要存储这个文本符号的,就存储这个符号对应的数字。这个数字就叫这个符号的编码值。
编码表:保存每个符号对应的编码值的表
(1)、ASCII码表
总共有128个字符对应的编码值,主要包含:常用的英文符号,数字字符和字母
A-65 a-97
(2)、Unicode编码表(Python)
Unicode编码表中包含ASCII表
Unicode又叫万国码、统一码,它包含了师姐上所以有国家所有民族的所有语言的符号
中文编码:4e00~9fa5
print(0x9fa5-0x4e00) # 20901
(3)编码值的应用
chr(编码值)
获取指定编码值对应的字符
print(chr(97))
print(chr(0x4e00))
print(chr(0x9fa5))
ord(字符)
获取指定字符对应的编码值(编码值以10进制的方式返回)
注意 字符–长度为1 的字符串
print(ord('a'), ord('A')) # 97 65
print(ord('婷')) # 23159
(4)编码字符
在字符串中表示字符的方式有两种:直接提供字符
,提供编码字符
str1='a'
str2='\u0061'
print(str1,str2) # a a
3、字符串的操作
3.1查
字符串获取元素和列表的语法一模一样
message='helloworld!'
print(message[0],message[2]) # h l
print(message[1:-1:2]) #elwol
for index,item in enumerate(message):
print(index,item,end=' ') #0 h 1 e 2 l 3 l 4 o 5 w 6 o 7 r 8 l 9 d 10 !
3.2 +、*
字符串1+字符串2 将两个字符串合并,长生一个新的字符串
字符串*N 字符串重复N次产生一个新的字符串
3.3 in 和 not in
字符串1 in 字符串2 判断字符串2中是否包含字符串1
print('avsc' in 'afseeag') # False
4、字符串的相关方法
4.1、常用的方法:
字符串.join(序列) 将序列中的元素用指定的字符串拼接在一起形成一个新的字符串;序列中的元素也必须是字符串
list1=['a','b','后裔']
result=''.join(list1)
print(result) # ab后裔
如果需要join()
的序列中的元素不是字符串,可以使用类型转换方法str()
nums=[1,2,3,4]
result=''.join([str(i) for i in nums])
字符串1.split(字符串2) 以字符串2为切割点对字符串1进行切割,返回多个切割列表;如果切割点连续多次出现,结果中会出现空字符串
字符串1.split(字符串2,N) 将字符串1中前N个字符串2作为切割点
str1='dvsafger,dfaew,efwaew,eter'
result=str1.split(',')
print(result) #['dvsafger', 'dfaew', 'efwaew', 'eter']
字符串1.replace(字符串2,字符串3) 将字符串1中所有的字符串2都替换成字符串3
字符串1.replace(字符串2,字符串3,N) 替换N次,替换前N个
str1='dvsafger,dfaew,efwaew,eter'
result=str1.replace('d','ABC')
print(result) # ABCvsafger,ABCfaew,efwaew,eter
字符串.strip() 删除字符串左右两端的空白字符
字符串.lstrip()
字符串.rstrip()
字符串1.center(字符串2)/rjust/ljust/zfill
str1='abc'
print(str1.center(7,'+')) # ++abc++
print(str1.rjust(7,'-')) # ----abc
print(str1.ljust(7,'*')) # abc****
print(str1.zfill(7)) # 0000abc
字符串1.count(字符串2) 统计字符串1中字符串2出现的次数
字符串1.find(字符串2) 获取字符串1中字符串2第一次出现的位置(以0开始的下标值返回);找不到字符串2则返回-1
字符串1.find(字符串2,开始下标,结束下标) 获取字符串1中指定范围内字符串2第一次出现的位置
字符串1.index(字符串2) 获取字符串1中字符串2第一次出现的位置(以0开始的下标值返回);找不到字符串2则报错
字符串1.index(字符串2,开始下标,结束下标)
str1='abdsawe32434c'
print(str1.find('sa')) # 3
print(str1.index('we')) # 5
字符.isdight() 判断字符串是否是数字字符
字符.isupper()/lower() 判断字符是否是大小写字母
maketrans,translate()
str1='32451'
table=str.maketrans('1234567890','一二三四五六七八九零')
# 根据映射表的对应关系替换成字符串的相关字符
result=str1.translate(table)
print(result)
字符串1.endswith(字符串2) 判断字符串1是否以字符串2结尾,是则返回True,不是则返回False
str4='abc231ab'
str_4=input('请输入字符串:') # ab
print(str4.endswith(str_4)) # True
5、字符串格式化
5.1、字符串拼接+
age=int(input('年龄:'))
message='小明'+'今年'+str(age)+'岁'
print(message)
5.2、格式字符串
包含一个或者多个格式占位符的字符串%(数据1,数据2,数据3,....)
%s :可以给任何类型数据占位(字符串占位符)
%d :只能给数字数据占位(整数占位符)
%f :只能给数字数据占位(浮点数占位符)
%.Nf :只能给数字数据占位(保留N位小数)
name='小明'
age=18
message='%s今年%d岁!'%(name,age)
print(message) # 小明今年18岁!
print('%.2f'%(2.324354)) # 2.32
5.3、f-string
如果在字符串的最外面加上了f,就可以往字符串中通过{}来给字符串提供内容:{表达式} 表达式的结果就是对应的字符串内容
name='小明'
age=18
str1=f'{name}今年{age}岁'
print(str1) # 姓名:小明今年18岁
f-string的参数:{提供数据的表达式:参数}
a.控制小数位数
money=2344
result=f'余额:{money:.2f}'
print(result) # 余额:2344.00
num=3.3244
result=f'个数:{num:.0f}'
print(result) #个数:3
b.千位符分割
money=23447809
result=f'余额:{money:,}'
print(result) # 余额:23,447,809
result1=f'余额:{money:,.2f}'
print(result1) # 余额:23,447,809.00
c. 百分数
num=0.83
result=f'百分数:{num:%}'
result1=f'百分数:{num:.2%}'
print(result,result1) # 百分数:83.000000% 百分数:83.00%
d. 控制填充长度
num=3
result=f'{num:0>3}'
result1=f'{num:0<3}'
result2=f'{num:0^3}'
print(result,result1,result2) # 003 300 030