一 python 中的基础数据类型
1.int 数字类型(整数类型) 主要用来数学计算
2.str 字符串 可以保存少量数据进行操作
3.bool 布尔值 判断真假 True False
4. list 列表 保存大量数据 用 [] 表示
5. tuple 元祖 不可以放生改变 用(,) 表示
6.dict 字典 以 键值对的形式 存放 ,可以保存大量数据 用{key:value} 表示 ,key 是可hash 的,就是不可变的对象
7. set 集合 用{} 表示 ,不可以重复 , 去重最快的办法, 不保存 value 的 字典
(1) int (整数)
在python3中所有的整数都是int类型. 但在python2中如果数据量比较大. 会使用long类型.
在python3中不存在long类型
整数可以进行的操作:
bit_length(). 计算整数在内存中占用的二进制码的长度
(2) 布尔值(bool)
布尔值 只有 True False
转换问题:
str => int int(str)
int => str str(int)
int => bool bool(int) 0是 False 非0 就是 True
str = > bool bool(str) 空字符串 就是 False 非空就是 True
bool => str str(bool) 把 bool 值转换成相对应的 "值"
print(int(False)) # 0 print(int(True)) # 1 print(str(bool)) # <class 'bool'> print(type(bool)) # <class 'type'> print(str(False)) # False print(str("False")) # False
(3) 字符串 把字符连成串, python 中 用 ' ',"",""" """ ,引起来的内容称为字符串
a.索引, 索引就是下标,从0开始
# 0123456 7 8 s1 = "python最牛B" print(s1[0]) # 获取第0个 print(s1[1]) print(s1[2]) print(s1[3]) print(s1[4]) print(s1[5]) print(s1[6]) print(s1[7]) print(s1[8]) # print(s1[9]) # 没有9, 越界了. 会报错 print(s1[-1]) # -1 表示倒数. print(s1[-2]) # 倒数第⼆个
b, 切片
语法: str[start:end:step] 从start 开始 到 end 结束,每 step 取 一个
规则: 顾头不顾尾 start 可以取到,但是 end 是 取 不到的
print(s2[0:3]) # 从0获取到3. 不包含3. print(s2[6:8]) print(s2[6:9]) # 最⼤是8. 但根据顾头不顾腚, 想要取到8必须给9 print(s2[6:10]) # 如果右边已经过了最⼤值. 相当于获取到最后 print(s2[4:]) # 如果想获取到最后. 那么最后一个值可以不给. print(s2[-1:-5]) # 从-1 获取到 -5 这样是获取不到任何结果的. 从-1向右数. # 你怎么数也数不到-5 print(s2[-5:-1]) # 牛b, 取到数据了. 但是. 顾头不顾腚. 怎么取最后一个呢? print(s2[-5:]) # 什么都不写就是最后了 print(s2[:-1]) # 这个是取到倒数第一个 print(s2[:]) # 原样输出
# 跳着取, 步长 print(s2[1:5:2]) # 从第一个开始取, 取到第5个,每2个取1个 print(s2[:5:2]) # 从头开始到第五个. 每两个取一个 print(s2[4::2]) # 从4开始取到最后. 每两个取一个 print(s2[-5::2]) # 从-5取到最后.每两个取一个 print(s2[-1:-5]) # -1:-5什么都没有. 因为是从左往右获取的. print(s2[-1:-5:-1]) # 步长是-1. 这时就从右往左取值了 print(s2[-5::-3]) # 从倒数第5个开始. 到最开始. 每3个取一个
c . 字符串的相关操作
# 1.大小写转换
s = "hAHagE" s.capitalize() print(s) ## hAHagE 发下并没有改变,因为字符串本身是不会发生改变的 ret = s.capitalize() print(ret) ## Hahage 首字母大写,其余的都是小写
# 2. 大小写的转换 s = "asdASkjJJHkj" ret = s.upper() print(ret) # ASDASKJJJHKJ 全部变成大写 s = "asdASkjJJHkj" ret = s.lower() # 对 东欧的一些字母 支持不够好 print(ret) # asdaskjjjhkj 全部变成 小写 ## 应用, 检验用户输入的 验证码是否 合法
3.大变小 小变大 s = "asdASkjJJHkj" ret = s.swapcase() print(ret) # ASDasKJjjhKJ 大小写互换 大变小 小变大
4.变成小写 s = "asdASkjJJHkj" ret = s.casefold() print(ret) # asdaskjjjhkj 全部变成 小写 # 和 lower 的区别,lower() 对某些字符支持不够好,比如东欧的 ## casefold() 对所有的字符都有效
5.每个被特殊字符隔开的字母的首字母大写 s = "as哈哈dAS_kj,sa ds*ad/sadJJHkj" ret = s.title() print(ret) # As哈哈Das_Kj,Sa Ds*Ad/Sadjjhkj ### 中文也算特殊字符
6.居中 s = "哈哈哥" ret = s.center(5,"*") print(ret) # *哈哈哥* 把 s 拉长 到 5 个位置,然后放中间
7.更改 tab 的长度 s = "哈哈 哥" ret = s.expandtabs() print(ret) # 哈哈 哥 可以改变 的长度,默认更改为 8
8. 去空格 s = " 哈哈哥 " ret = s.strip() print(ret) # 哈哈哥 去掉 两边的 空格 s = "asjjdjjb" ret = s.strip("ab") print(ret) # sjjdjj 也可以去掉 字符串 左右两边的 元素 ret = s.lstrip() # 去掉 左边的 空格 ret = s.rstrip() # 去掉 右边的 空格
9. 替换 指定的元素 s = "hahage_嘻嘻姐_呵呵" ret = s.replace("hahage","哈哈哥") print(ret) # 哈哈哥_嘻嘻姐_呵呵
s = "hahage_嘻嘻姐_呵呵,呵呵笑死了"
ret = s.replace("呵呵","哈哈哥",2)
print(ret) # hahage_嘻嘻姐_哈哈哥,哈哈哥笑死了 替换 2 个
10 字符串 切割 s = "hahage_嘻嘻姐_呵呵,呵呵笑死了" ret = s.split(",") print(ret) # ['hahage_嘻嘻姐_呵呵', '呵呵笑死了'] 切完就是个列表 注意.注意.注意: s = "哈哈哥_嘻嘻姐_呵呵,呵呵笑死了哈哈" ret = s.split("哈哈") print(ret) # ['', '哥_嘻嘻姐_呵呵,呵呵笑死了', ''] ### 如果切割符在 左右 两端,那么一定会出现 空 字符串
11 格式化 输出 s1 = "我叫%s,今年%s岁了,我喜欢 %s." % ("哈哈哥","25","张敏") # 之前写法,个人比较喜欢 s2 = "我叫{},今年{}岁了,我喜欢{}".format("哈哈哥",25,"邱淑贞") # 按位置格式化 s3 = "我叫{2},今年{0}岁了,我喜欢{1}".format(25,"朱茵","哈哈哥")# 指定位置 name = "哈哈哥" age = 20 girl_name = "嘻嘻姐" s4 = f"我叫{name},今年{age}岁了,我喜欢{girl_name}"
12 以什么开头,用 s.startswith(元素) s = "我叫哈哈哥,我今年20岁了,我喜欢的女明星是嘻嘻姐" ret = s.startswith("哈哈哥") print(ret) ## False ret = s.startswith("我") print(ret) ## True
13 以什么结尾 用 s.endswith(元素)
ret = s.endswith("姐")
print(ret) ## True
14 元素出现的 次数
ret = s.count("哈")
print(ret) ## 2
15 查找 元素 索引 的位置
ret = s.index("哈哈")
print(ret) ## 2 求索引 找不到会报错
ret = s.find("哈哈")
print(ret) # 2
ret = s.find("哈哈姐")
print(ret) ## -1 找不到返回 -1
ret = s.find("哈哈哥",1,12)
print(ret) ## 2 切片找
16 条件判断 # 条件判断 s14 = "123.16" s15 = "abc" s16 = "_abc!@" # 是否由字母和数字组成 print(s14.isalnum()) print(s15.isalnum()) print(s16.isalnum()) # 是否由字母组成 print(s14.isalpha()) print(s15.isalpha()) print(s16.isalpha()) # 是否由数字组成, 不包括小数点 print(s14.isdigit()) print(s14.isdecimal()) print(s14.isnumeric()) # 这个比较牛B. 中文都识别. print(s15.isdigit()) print(s16.isdigit())
17.计算 字符串的长度 len() s = "我叫哈哈哥,我今年20岁了" ret = len(s) print(ret) ## 13 注意: len 是 python 中的内置函数
18 迭代 我们可以使用 for 循环 来获取 字符串的 每一个 字符 语法: for 变量 in 可迭代对象: pass 可迭代对象 就是一个一个可以 往外 取值的 对象
s = "我叫哈哈哥,我今年20岁了"
while 循环:
index = 0
while index < len(s):
print(s[index]) ## 利用切片索引 来完成 字符串的 查找
index += 1
for 循环:
for i in s:
print(i)