Python3基础:04_字符串、列表、元组、字典和集合

0.前言

  这篇文章将对字符串、列表、元组、字典和集合的知识点以及它们之间的异同作出总结。
  我个人认为Python中的字符串、列表、元组和字典的知识是非常重要的,他们之间的概念对我来说有点点绕,所以还是梳理总结一下它们之间的区别。


  插一个总体比较的列表

~ 字符串 列表 元组 字典 集合
创建方法 name = “字符串” name = [value0,value1,…] name = (value0,valu1,…) name = {“key0”:“value0”,“key1”:“value1”} name = {value0,value1,…}、name = set{}
访问方式 支持索引访问 支持索引访问 支持索引访问 支持索引访问 只能访问整个集合
修改方式 只能进行拼接 索引修改 不允许修改,但可两个元组拼接 索引键修改对应的值,不能修改键。 可以通过内置函数方法增减元素
数据处理 有转义符操作 有相应的函数进行操作 有相应的函数进行操作 有相应的函数进行操作 有相应的函数进行操作
有序/无序 有序 有序 有序 有序 无序
特点 创建简单,使用简单。 用[ , ]创建,可以对列表进行多种操作。 用( , )创建,不能修改元素的值 用{,}创建,一个键对应一个值,不能存在相同的键,不能修改键,可以修改键对应的值 无序、自动合并相同元素

可以彼此之间作参数,但是字典的键只能是不能修改的类型。



下面就是关于这些数据类型的详细介绍了



1.字符串str

  字符串类型的变量也是常用的一个变量类型,Python中没有单个字符的说法,字符类型就是字符串。


①字符串变量的创建,可直接用双引号(")创建,例如:
a = "hello"
print(type(a))

输出结果
<class ‘str’>


②访问字符串中的值
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")语句再增加一个换行,所以就是空了两行。


2.列表list

  列表是Python中最基本的数据结构,并且列表的数据项不需要具有相同的类型。

①创建列表
list_student = ["CainCary", 5320, "man", 18]
print(type(list_student))

运行结果
<class ‘list’>

②访问列表
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’]

  ps:列表中的数据类型是任意的,所以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() 复制列表

3.元组tuple

  元组与列表类似,不同之处在于元组的元素不能修改;元组使用小括号,列表使用方括号。


①创建元组
tup_student = ("CainCary", 5320, 'man', 18)
print(type(tup_student))

运行结果
<class ‘tuple’>


  PS:只含一个元素的元组需要在元素后面加逗号,不然会被认成整型。

②访问元组
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):将列表转换成元组。


4.字典dict

  字典是另一种可变容器模型,且可存储任意类型对象。
  字典的每个键值( key => value) 对用冒号( : )分割,
  每个对之间用逗号( , )分割,整个字典包括在花括号({ })中


①创建字典
dict_stu = {"姓名": "CainCary", "年龄": 18}
print(type(dict_stu))

运行结果:
<class ‘dict’>

  PS:字典的元素是"键 — 值"对,一个键对应一个值,用( : )表示,不同元素之间用( , )表示。


②访问字典
dict_stu = {"姓名": "CainCary", "年龄": 18}
print("姓名:", dict_stu["姓名"])

运行结果:
姓名: CainCary

  PS:访问的是"键"输出的是"值"。


③修改字典
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}
{}

  PS:删除字典中的元素,只需要删除"键"就好了,若在最后一行输出打印字典的语句,则会报错。


⑤字典键的特性
  a.不能有相同的键出现。
  b.键和值必须成对出现。
  c.键必须不可变,所以键可以是:数字、字符串,也可以是元组,但是但是列表就不行,因为列表的值允许修改的,而元组不允许。

⑥字典中相关函数和方法
函数和方法名 功能
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() 随机返回并删除字典中的一对键和值(一般删除末尾对)。

5.集合set

  集合(set)是一个无序的不重复元素序列。

  可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。


①创建集合
set_stu = {'CainCary', 5320, 18}
print(type(set_stu))

运行结果:
<class ‘set’>


②访问集合元素

  集合不支持元素索引,就是不能像列表、字典那样用[ ]来访问结合元素,貌似只能输出整个集合。

set_stu = {'CainCary', 5320, 18}
print(set_stu)

运行结果:
{5320, 18, ‘CainCary’}

  PS:集合元素的输出顺序是随机的。

③修改集合

  通过相关函数方法修改。

方法 描述
add() 为集合添加元素
clear() 移除集合中的所有元素
copy() 拷贝一个集合
difference() 返回多个集合的差集
difference_update() 移除集合中的元素,该元素在指定的集合也存在。
discard() 删除集合中指定的元素
intersection() 返回集合的交集
intersection_update() 删除集合中的元素,该元素在指定的集合中不存在。
isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset() 判断指定集合是否为该方法参数集合的子集。
issuperset() 判断该方法的参数集合是否为指定集合的子集
pop() 随机移除元素
remove() 移除指定元素
symmetric_difference() 返回两个集合中不重复的元素集合。
symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union() 返回两个集合的并集
update() 给集合添加元素
④集合特点
  a.集合是无序的,所以输出时是一个随机排序的集合。
  b.不能索引输出单个元素,只能输出整个集合。
  c.自动合并相同的元素



  不得不说字符串、列表、元组、字典和集合的知识相当多,也十分灵活,主要内置了很多处理这些数据类型的函数方法,功能还是十分强大的,就是整理起来,手有点疼。


时间:2019年5月1日15:06:04


猜你喜欢

转载自blog.csdn.net/qq_44713454/article/details/89713247