前言
python中数据类型可以分为数字型和非数字型
- 数字型:
1.整型(int)
2.浮点型(float)
3. 布尔型(bool)
4. 复数型(complex) - 非数字型:
- 字符串
- 列表
- 元组
- 字典
- 集合
列表(list)
-
定义
-
用于存储一串信息
-
列表用 [ ] 表示,数据与数据间用 , 分隔。(相当于其他语言的数组)
-
索引从0开始,索引就是数据在列表中的位置编号,也叫做下标。用**[索引]**进行取值,如果超出索引范围,程序会报错。
name_list = ["张三", "李四", "王五"]
num_list = [2, 6, 4, 9]
name = name_list[0]
print(name)
- 常用操作
例如:
注:还可用.index(数据)函数取索引,如果不存在该数据,程序会出错
python中列表可以存储不同类型的数据,但是我们通常给列表中存储相同类型的数据。
name_list = ["张三", "李四", "王五"]
num_list = [0, 1, 2, 3]
name = name_list[0]
print(num_list)
# 取索引(如果没有该数据会报错)
name = name_list.index("李四")
print(name)
# 增加
num_list.insert(2, 9) # 在指定位置插入
print(num_list)
num_list.append(0) # 在末尾追加数据
print(num_list)
# num_list.extend(name_list) # 在num_list后面连接name_list
# print(num_list)
# 修改
num_list[0] = 10 # 将num_list[0]的位置修改为10
print(num_list)
# 删除
name = num_list[0]
del name # 删除列表中第1个元素(从内存中删除,把空间释放掉)
# 后续的代码不能再使用name
num_list.remove(9) # 将9从列表中删除
print(num_list)
num_list.pop() # 将列表最后一个元素删除
print(num_list)
num_list.pop(2) # 将列表中索引为2的数据删除
print(num_list)
# num_list.clear() # 将列表清空
# print(num_list)
# 统计
length = len(num_list) # 统计列表的长度
print(length)
count = num_list.count(0) # 统计0再列表中出现的次数
print(count)
# 排序
num_list.sort() # 将列表按升序排序(默认升序)
print(num_list)
num_list.sort(reverse=True) # 将列表按降序排序
print(num_list)
num_list.reverse() # 将列表逆序
print(num_list)
拓展 :关键字,函数,方法的区别
- 关键字:是python内置的,具有特殊意义的标识符。关键字后面不需要使用括号。
- 函数:封装独立的功能,可以直接使用
函数名(参数)
- 方法:和函数类似,同样是用来封装这个独立的功能。需要通过对象进行调用,表示针对这个对象进行操作。
对象.方法名(参数)
- 循环遍历
- 遍历就是从头到尾依次从列表中获取数据。
- 在python中为了提高列表遍历的效率,专门提供迭代器iterator遍历
- 使用for就能够实现迭代器遍历
# for 循环内部使用的变量 in 列表
for name in num_list:
循环内部针对元素进行的操作
print(name)
# 循环遍历
for num in num_list:
print(num)
元组(Tuple)
- 定义
- 元组表示多个元素组成的序列,与列表类似,不同之处在于元组的元素不能修改。
- 元组用()定义,数据之间用,分隔
num_tuple = ("张三", 18, 120, 175.5)
info_tuple = () # 创建空元组
single_tuple = (1, ) # 创建只包含一个元素的元素
# 注:元素后面的,不能丢。否则相当于定义了一个变量
- 常用操作
# 因为元组中的元素不能变,所以没有增,删,改操作
# 取值
name = num_tuple[0]
print(name)
# 取索引.index()
name_index = num_tuple.index("张三")
print(name_index)
# 返回元组的长度len(元组)
print(len(num_tuple))
# 统计元素出现的次数.count(数据)
print(num_tuple.count("张三"))
- 循环遍历
# 循环遍历(与列表完全相同,不再赘述)
for name in num_tuple:
print(name)
-
应用场景
-
用于函数的参数和返回值,一个函数可以接受任意多个参数,或者一次返回多个数据。
-
格式字符串,格式化字符串后面的()本来就是一个元组
-
让列表中的数据不可以被修改,以保护数据安全。
-
列表和元组可以进行类型转化,通过list()和tuple()函数进行类型转换
# 格式化字符的输出,()就是一个元组
info = ("栗子", 18)
print("%s的年龄是%d" % info)
# 元组与列表的相互转化
# 1>使用list()函数可以把元组转换成列表
info_tuple = ("栗子", 18)
info = list(info)
info[0] = "灭霸"
print(info[0])
# 2>使用tuple()函数把列表转换成元组
info_list = ("栗子", 18)
# info = tuple(info_list) # 此处info为元组,所以对它进行修改会报错
# info[0] = "灭霸"
# print(info[0])
字典(dict)
- 定义
- 字典同样可以用来存储多个数据,而且也是除列表以外最灵活的数据类型。
- 字典中用{}定义。(有点类似c++中的map)
student = {
1: "蜘蛛侠",
2: "钢铁侠",
3: "黑寡妇"
}
注:
- 键key是索引
- 值value是值
- 每个键和值之间用:分隔
- 元素与元素之间用, 分隔。
- 键必须是唯一的
- 值可以是任意类型,但键只能是字符串,数字或者元组。
- 常用操作
student = {
1: "蜘蛛侠",
2: "钢铁侠",
3: "黑寡妇"
}
# 1.取值
# 在取值的时候,如果指定的key不存在,程序会报错
print(student[1])
# print(student[9])
# 2.增加/修改
# 如果key存在,会修改键值对
student[1] = "美国队长"
# 如果key不存在,会新增键值对
student[0] = "灭霸"
# 3.删除
# 在删除的时候,如果指定的key不存在,程序会报错
student.pop(0)
# student.pop(9)
print(student)
# 输出key 和value
print(student.keys())
print(student.values())
# 同样可以使用len()但不可以使用count()方法
print(len(student))
- 循环遍历:是从字典中获取所有的键值对
格式:
# for 循环内部使用的'key的变量' in 字典:
for k in student:
print("%d:%s" %(k, student[k]))
字符串
-
定义
-
用于表示文本文件的数据类型
-
在python中使用一对""或者’'定义一个字符串
注:
- 如果在字符串内部使用"",则可以使用’'来定义字符串.
- 如果在字符串内部使用’'则可以使用"",来定义字符串.
- 大多数编程语言使用""
- 可以使用索引在字符串的指定位置获取字符,同样从0开始
str1 = "愿你乐于挥霍的时间,都不能当作是浪费"
str2 = "愿你的快乐不缺观众,你的故事有人懂"
str3 = "'无所畏惧'"
str4 = '"勇往直前"'
print(str1)
print(str2)
print(str3)
print(str4)
-
常用操作
-
判断类型
方法 | 说明 |
---|---|
string.isspace() | 如果string中只包含空格返回True |
string.isalnum() | 如果string至少有一个字符并且所有字符字母或者数字则返回True |
string.isalpha() | 如果sring至少有一个字符并且所有字符都是字母返回True |
string.isdecimal() | 如果string只包含数字返回True,全角数字,不能判断小数 |
string.isdight() | 如果string只包含数字返回True,全角数字,(1),\u00b2 |
string.isnumeric | 如果只包含数字返回True,全角数字,汉字数字 |
# 判断str5是否全为空格,是返回True
str5 = " "
print(str5.isspace())
# 判断str5至少有一个字符并且所有的字符都是有数字和字母组成
str5 = "hello world"
print(str5.isalnum())
# 判断str5是否全有字母组成
str5 = "hello123"
print(str5.isalpha())
# 判断str5是否只为数字
str5 = "hi124"
print(str5.isdecimal())
# 判断str5是否全为数字组成(可以是半角数字)
str5 = "\u00b2"
print(str5.isdigit())
# 判断str5是否全为数字组成(可以是汉字数字)
str5 = "一百万"
print(str5.isnumeric())
- 大小写转换
方法 | 说明 |
---|---|
string.capitalize() | 把字符串的第一个字符大写 |
string.title() | 把字符串每个单词的首字母大写 |
string.lower() | 将string中所有的大写字母转换成小写 |
string.upper() | 将string中所有的小写字母转换成大写 |
string.swapcase() | 翻转string中的大小写 |
# 将字符串的首字母大写
str6 = "hi,sally"
print(str6.capitalize())
# 将字符串中每个单词的首字母大写
str6 = "good good study, day day up"
print(str6.title())
# 将字符串中的大写字母全部转换成小写
str6 = "I love you !"
print(str6.lower())
# 将字符串中的小写字母全部转换成大写
str6 = "i hate you"
print(str6.upper())
# 将字符串中大写转换成小写,小写转换成大写
str6 = "Hello Python"
print(str6.swapcase())
- 文本对齐方式
方法 | 说明 |
---|---|
string.ljust(width) | 返回原字符串左对齐,并使用空格填充至width的长度 |
string.rjust(width) | 返回原字符串右对齐,并使用空格填充至width的长度 |
string.center(width) | 返回一个原字符串居中对齐,并使用空格填充至width的长度 |
# 使用字符串的文本方式对齐,使诗歌居中输出
poem = [
"望庐山瀑布",
"李白",
"日照香炉生紫烟,",
"遥看瀑布挂前川。",
" 飞流直下三千尺,",
" 疑是银河落九天。"
]
for poem_str in poem:
print("%s" % poem_str.center(20, " ")) # 可以修改填充的元素,和填充完的长度
- 拆分和连接
方法 | 说明 |
---|---|
string.split(str=“a”,num) | 以str为分隔符拆分,如果有num,则分隔num个长度进行分隔,如果没有num默认为1,str默认包含’\t ‘’\n’’\r’ |
string.join(seq) | 以string为分隔符,将seq中所有的元素合并为一个新的字符串 |
# 以s1为分隔符,将s2合并成一个新的字符串
s1 = "hello"
s2 = "world"
s1.join(s2)
print(s1)
print(s2)
print(s1.join(s2))
- 字符串的切片
- 切片方法适用于字符串,列表,元组。
- 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串。
- 列表和元组都是有序的集合,可以通过索引来获取对应的数据。
- 字典是无序的集合,使用键值来获取出局
字符串[开始索引:结束索引:步长]
注:
- 指定区间属于左闭右开
- 从头开始,开始索引可以省略,冒号不能省略
- 到末尾结束,结束索引可以省略,冒号不能省略
- 步长默认为1,如果连续切片,数字和冒号都可以省略
num_str = "0123456789"
# 截取2到5的数字
print(num_str[2:6])
# 截取2到末尾的数字
print(num_str[2:])
# 截取开始到5的字符串
print(num_str[:6])
# 从开始位置,每隔一个字符截取一个字符串
# 即输出的都是偶数
print(num_str[::2])
# 要求输出的都是奇数
print(num_str[1::2])
# 截取2到末尾-1的字符串
print(num_str[-1])
print(num_str[2:-1])
# 截取字符串末尾两个人字符串
print(num_str[-2:]) # -2的位置就表示倒数第二个数
# 字符串的逆序
print(num_str[-1::-1]) # 步数为-1表示往左切片
注:步数为负可以进行逆序切片