这篇文章将对字符串、列表、元组、字典和集合的知识点以及它们之间的异同作出总结。
我个人认为Python中的字符串、列表、元组和字典的知识是非常重要的,他们之间的概念对我来说有点点绕,所以还是梳理总结一下它们之间的区别。
插一个总体比较的列表
~ | 字符串 | 列表 | 元组 | 字典 | 集合 |
---|---|---|---|---|---|
创建方法 | name = “字符串” | name = [value0,value1,…] | name = (value0,valu1,…) | name = {“key0”:“value0”,“key1”:“value1”} | name = {value0,value1,…}、name = set{} |
访问方式 | 支持索引访问 | 支持索引访问 | 支持索引访问 | 支持索引访问 | 只能访问整个集合 |
修改方式 | 只能进行拼接 | 索引修改 | 不允许修改,但可两个元组拼接 | 索引键修改对应的值,不能修改键。 | 可以通过内置函数方法增减元素 |
数据处理 | 有转义符操作 | 有相应的函数进行操作 | 有相应的函数进行操作 | 有相应的函数进行操作 | 有相应的函数进行操作 |
有序/无序 | 有序 | 有序 | 有序 | 有序 | 无序 |
特点 | 创建简单,使用简单。 | 用[ , ]创建,可以对列表进行多种操作。 | 用( , )创建,不能修改元素的值 | 用{,}创建,一个键对应一个值,不能存在相同的键,不能修改键,可以修改键对应的值 | 无序、自动合并相同元素 |
可以彼此之间作参数,但是字典的键只能是不能修改的类型。
下面就是关于这些数据类型的详细介绍了
字符串类型的变量也是常用的一个变量类型,Python中没有单个字符的说法,字符类型就是字符串。
①字符串变量的创建,可直接用双引号(")创建,例如:
a = "hello"
print(type(a))
输出结果
②访问字符串中的值
a = "hello"
print("会打印什么呢:%s" % a[0])
print("会打印什么呢:%s" % a[0:5])
运行结果
会打印什么呢:h
会打印什么呢:hello
从这个例子可以看出字符串是不是和C语言里面的一维数组很像呢!
③修改字符串
字符串只能通过拼接修改。
a = "hello"
print(a[:5]+" world!")
运行结果:
hello world!
④字符串运算符
运算符 | 描述 |
---|---|
+ | 字符串连接 |
* | 重复输出字符串 |
[ ] | 通过索引获取字符串中字符 |
[ : ] | 截取字符串中的一部分,遵循左闭右开原则,str[0,2] |
in | 成员运算符 - 如果字符串中包含给定的字符返回 True |
not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True |
r/R | 可以打印转义字符(\n)等,如print( r" \n " ) |
看下面例子:
# 创建两个字符串
a = "Hello"
b = "Python"
# “+”字符串拼接(相加)
print("a + b 输出结果:", a + b)
# “*”字符串重复打印(int * str)
print("a * 2 输出结果:", a * 2)
# “[ ]”索引字符串中的值
print("a[1] 输出结果:", a[1])
# “[ : ]”截取部分字符串,左开右闭
print("a[1:4] 输出结果:", a[1:4])
# 成员运算符“in”--包含
if "H" in a:
print("H 在变量 a 中")
else:
print("H 不在变量 a 中")
# 成员运算符“not in”--不包含
if "M" not in a:
print("M 不在变量 a 中")
else:
print("M 在变量 a 中")
# 打印转义字符
print('\n')
print(R'\n')
输出结果
a + b 输出结果: HelloPython
a * 2 输出结果: HelloHello
a[1] 输出结果: e
a[1:4] 输出结果: ell
H 在变量 a 中
M 不在变量 a 中
\n
解析:
最后有两个空行是因为print输出时默认换行,而print("\n")语句再增加一个换行,所以就是空了两行。
列表是Python中最基本的数据结构,并且列表的数据项不需要具有相同的类型。
①创建列表
list_student = ["CainCary", 5320, "man", 18]
print(type(list_student))
运行结果
②访问列表
list_student = ["CainCary", 5320, "man", 18]
list_number = [1, 2, 3, 4, 5]
# 下标访问
print("姓名:", list_student[0])
# 截取片段[ : ]
print("数组:", list_number[1:4])
运行结果
姓名:CainCary
数组: [2, 3, 4]
③修改列表
a.修改列表参数
list_student = ["CainCary", 5320, "man", 18]
print("原始列表:", list_student)
list_student[1] = 1805
list_student[3] = 20
print("修改后的列表:", list_student)
运行结果:
原始列表: [‘CainCary’, 5320, ‘man’, 18]
修改后的列表: [‘CainCary’, 1805, ‘man’, 20]
b.增加列表元素
list_student = ["CainCary", 5320, "man", 18]
list_fruit = ["苹果", "香蕉", "橘子"]
print("原始列表:", list_student)
list_student.append(list_fruit)
list_student.append('Python')
print("修改后的列表:", list_student)
运行结果:
原始列表: [‘CainCary’, 5320, ‘man’, 18]
修改后的列表: [‘CainCary’, 5320, ‘man’, 18, [‘苹果’, ‘香蕉’, ‘橘子’], ‘Python’]
解析:
列表中的数据类型是任意的,所以append()方法可以添加任何数据类型,包括一个列表。
c.删除列表元素
list_student = ["CainCary", 5320, "man", 18]
print("原始列表:", list_student)
# 指定元素删除remove
list_student.remove(18)
# 指定元素下标删除del
del list_student[0]
print("修改后的列表:", list_student)
运行结果:
原始列表: [‘CainCary’, 5320, ‘man’, 18]
修改后的列表: [5320, ‘man’]
④Python列表脚本操作符
表达式 | 描述 | 例子 | 结果 |
---|---|---|---|
len() | 长度 | len([1,2,3]) | 3 |
+ | 组合 | [1,2]+[3,4] | [1,2,3,4] |
* | 重复 | [‘sao’]*3 | [‘sao’,‘sao’,‘sao’] |
in | 元素是否存在于列表中 | 3 in [1, 2, 3] | True |
for x in [1, 2, 3]: print(x, end=" ") | 迭代 | 1 2 3 |
⑤列表中的函数
函数名 | 功能 |
---|---|
len(list) | 返回列表元素个数 |
max(list) | 返回列表元素中的最大值 |
min(list) | 返回列表元素最小值 |
list(seq) | 将元组转换为列表 |
⑥列表中的方法
方法名 | 功能 |
---|---|
list.append(obj) | 在列表末尾添加新的对象(包括列表、元组等数据类型) |
list.count(obj) | 统计某个元素在列表中出现的次数 |
list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index, obj) | 将对象插入列表 |
list.pop([index=-1]) | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove(obj) | 移除列表中某个值的第一个匹配项 |
list.reverse() | 反向列表中元素 |
list.sort( key=None, reverse=False) | 对原列表进行排序 |
list.clear() | 清空列表 |
list.copy() | 复制列表 |
元组与列表类似,不同之处在于元组的元素不能修改;元组使用小括号,列表使用方括号。
①创建元组
tup_student = ("CainCary", 5320, 'man', 18)
print(type(tup_student))
运行结果
注意:只含一个元素的元组需要在元素后面加逗号,不然会被认成整型。
②访问元组
tup_student = ("CainCary", 5320, 'man', 18)
print("第一个元素:", tup_student[0])
运行结果
第一个元素: CainCary
③修改元组
元组中的元素不允许修改参数,但可以进行拼接(+)
tup_student1 = ("CainCary", 5320)
tup_student2 = ('man', 18)
print("元组可以拼接:", tup_student1+tup_student2)
运行结果
元组可以拼接: (‘CainCary’, 5320, ‘man’, 18)
④删除元组
元组中的元素值是不允许删除的,但可以删除整个元组(del)
tup_student = ("CainCary", 5320, 'man', 18)
del tup_student
print("元组可以拼接:", tup_student)
运行结果:
NameError: name ‘tup_student’ is not defined
⑤元组运算符
具体参照列表运算符
⑥元组函数
具体参照列表运算符,区别在于类型转换tuple(seq):将列表转换成元组。
①创建字典
dict_stu = {"姓名": "CainCary", "年龄": 18}
print(type(dict_stu))
运行结果:
注意:字典的元素是"键 — 值"对,一个键对应一个值,用( : )表示,不同元素之间用( , )表示。
②访问字典
dict_stu = {"姓名": "CainCary", "年龄": 18}
print("姓名:", dict_stu["姓名"])
运行结果:
姓名: CainCary
注意:访问的是"键"输出的是"值"。
③修改字典
dict_stu = {"姓名": "CainCary", "年龄": 18}
print("年龄:", dict_stu["年龄"])
dict_stu["年龄"] = 20
print("年龄:", dict_stu["年龄"])
运行结果
年龄: 18
年龄: 20
④删除字典元素
dict_stu = {"姓名": "CainCary", "年龄": 18, "学号": 5320}
print(dict_stu)
# 删除字典中的“年龄”键
del dict_stu["年龄"]
print(dict_stu)
# 清空字典
dict_stu.clear()
print(dict_stu)
# 删除字典
del dict_stu
运行结果:
{‘姓名’: ‘CainCary’, ‘年龄’: 18, ‘学号’: 5320}
{‘姓名’: ‘CainCary’, ‘学号’: 5320}
{}
注意:删除字典中的元素,只需要删除"键"就好了,若在最后一行输出打印字典的语句,则会报错。
⑤字典键的特性
⑥字典中相关函数和方法
函数和方法名 | 功能 |
---|---|
radiansdict.clear() | 删除字典内所有元素 |
radiansdict.copy() | 返回一个字典的浅复制 |
radiansdict.fromkeys() | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
radiansdict.get(key, default=None) | 返回指定键的值,如果值不在字典中返回default值 |
key in dict | 如果键在字典dict里返回true,否则返回false |
radiansdict.items() | 以列表返回可遍历的(键, 值) 元组数组 |
radiansdict.keys() | 返回一个迭代器,可以使用 list() 来转换为列表 |
radiansdict.setdefault(key, default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
radiansdict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
radiansdict.values() | 返回一个迭代器,可以使用 list() 来转换为列表 |
pop(key[,default]) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
popitem() | 随机返回并删除字典中的一对键和值(一般删除末尾对)。 |
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
①创建集合
set_stu = {'CainCary', 5320, 18}
print(type(set_stu))
运行结果:
②访问集合元素
集合不支持元素索引,就是不能像列表、字典那样用[ ]来访问结合元素,貌似只能输出整个集合。
set_stu = {'CainCary', 5320, 18}
print(set_stu)
运行结果:
{5320, 18, ‘CainCary’}
注意:集合元素的输出顺序是随机的。
③修改集合
通过相关函数方法修改。
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 删除集合中的元素,该元素在指定的集合中不存在。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
④集合特点
总结:
不得不说字符串、列表、元组、字典和集合的知识相当多,也十分灵活,主要内置了很多处理这些数据类型的函数方法,功能还是十分强大的,就是整理起来,手有点疼。
时间:2019年5月3日10:28:55