数字类型、字符串类型及其操作
一、可变与不可变类型
1.可变类型
值改变,但是id不变,证明其实就是在改变原值,即 原值可变,是可变类型
2.不可变类型
值改变,id也跟着变,证明其实是产生了新值,原值不可变
二、数字类型及其操作
1. int类型
1.1 作用:
记录整数状态的事物,如:年龄、号码人数等
1.2 定义:
age = 18 # age = int(18)
int 可以将纯数字的字符串转化成整型(两边可以有空格,中间不行)
1.3 常用操作和内置方法
算术运算 + 比较运算
2. float类型
2.1 作用
记录薪资、身高、体重等
2.2 定义
length = 4.76 # length = float(4.76)
float 可以将浮点型数字组成的字符串转化成浮点型
2.3 常用操作和内置方法
算术运算 + 比较运算
总结:数字类型只能存一个值,属于不可变类型
三、字符串及其操作
1. 作用
记录描述性质的状态,如:姓名、住址等
2. 定义:
在引号(' '、" "、''' '''、""" """)内包含一串或者多行字符串
数据类型转换:str()可以把任意类型转换成字符串类型
3. 常用操作+内置的方法(重点掌握)
(1)按索引取值(正向取、反向取,不可改)
s = "hello"
print(s[0])
print(s[-1])
(2)切片操作
顾头不顾尾,有步长,属于拷贝操作,不改变原值的id
msg = 'hello world'
print(msg[0:4]) # hell 默认步长为1,取第1到第4个字符, 原字符串不变
print(msg[:6:2]) # hlo 省略起始位置,默认起始位置为0
print(msg[::2]) # hlowrd 省略结束位置,默认一直到末尾全部都取到
print(msg[::]) # hello world 可简写成print(msg[:]) 省略步长,默认步长为1
(3)长度len()
msg = 'hello'
print(len(msg))
(4)成员运算in 、 not in
msg = "hello 你好"
print("你好" in msg)
print("你好" not in msg) # 语义明确,推荐使用
print(not "你好" in msg) # 不推荐使用
(5)a. 移除空白strip
msg = ' hello \n '
res1 = msg.strip() # 默认移除两边的空白字符,包括\n 和 \t,不改变原来的msg
b. 移除两边非空白字符
msg = "==hello!()"
res = msg.strip("()=!")
print(res) # 得到的是新字符串,不改变原来的msg
(6)切分split:将字符串按照某个分隔符切分成一个列表
msg = "a:b:c:d" # 字符串按冒号有规律的分布
res = msg.split(':')
print(res) # ['a', 'b', 'c', 'd']
(7)循环(可以被for循环遍历)
for item in "hello":
print(item)
4.需要掌握的操作
(1)strip,lstrip,rstrip
msg = "*****hello*****"
print(msg.strip('*')) # hello 去除两边的*号
print(msg.lstrip('*')) # hello***** 去除左边的*号
print(msg.rstrip('*')) # *****hello 去除右边的*号
(2)lower、upper、(swapcase)
msg = "aABb"
print(msg.lower()) # aabb 所有字母全部小写
print(msg.upper()) # AABB 所有字母全部大写
print(msg.swapcase()) # AabB 所有的字母大小写反转
(3)startswith、endswith
返回布尔值
msg = "tomorrow is Tuesday"
print(msg.startswith("to")) # True 判断是否是以to开头
print(msg.endswith("y")) # True 判断是否是以y结尾
(4)format三种用法
以下代码均可实现格式化输出"my name is jason,age is 18"
# ① %s的方式
print("my name is %s, age is %s" % ("jason", 18))
# ② format的方式
print("my name is {}, age is {}".format("jason", 18))
print("my name is {x}, age is {y}".format(y=18, x="jason"))
print("my name is {0}, age is {1}".format("jason", 18)) # 按照位置
# ③ f''的方式
x = 'jason'
y = 18
print(f"my name is {x}, age is {y}") #python3.6版本及之后支持
了解:
① f 搭配{}可以执行字符串中的代码
f{'print("hello world")'}
② f 包含的字符串可以放到多行
name = 'jason'
age = 18
res = f'my name is {name}' \
f'age is {age}'
③ {}内不能有#和/
print('age is {{18}}') # ==>age is {18}
类似的:
n = 5
print('房贷利率减少了%s%%' % n) # ==>房贷利率减少了5%
(5)split、rsplit
msg = 'a: b: c: d'
print(msg.split(':',1)) # ['a', 'b: c: d] 正向分割一次
print(msg.rsplit(':',1)) # ['a: b: c', 'd'] 反向分割一次
(6)join:将列表中的元素以指定字符连接组合成一个字符串
l = ['a', 'b', 'c', 'd']
print("-".join(l)) # a-b-c-d
(7)replace:替换指定字符串
msg = 'cc cc cc'
print(msg.replace('cc', 'CC', 2)) # CC CC cc (将前两个"cc"替换成"CC")
print(msg.replace('cc','c')) # c c c (将所有的cc都替换成c)
(8)isdigit:判断字符串是否是由纯数字组成的
age = " 18**"
print(age.isdigit()) # False (必须纯数字才是True,小数点、空格都不能有)
str类型总结:
(1)只能存一个值
(2)有序
(3)属于不可变类型