文章目录
前言
列表、元组、集合、字典
一、列表
Python 支持多种复合数据类型,可将不同值组合在一起。最常用的列表 ,是用方括号标注,逗号分隔的一组值。列表可以包含不同类型的元素,但一般情况下,各个元素的类型相同。
1.列表的表达式
lst = []
lst1 = ['张无忌', '张翠山', 1997, 2000]
lst2 = [1, 2, 3, 4, 5 ]
lst3 = ["a", "b", "c", "d"]
lst4 = ['周芷若', '周杰伦', '周星驰', '周润发']
2.访问列表的值
2.1 索引
我们想索引列表里的某一个数据,可以用list[]
中括号里放入需要索引数据的脚标,比如说,首先建立一个列表:
lst = ['周芷若', '周杰伦', '周星驰', '周润发']
我想在lst
访问周星驰
:
print(lst[3]) # '周星驰'
列表的索引、反向索引、切片和字符串的使用方法是一样的。
3.列表的更新
对列表的数据项进行修改或更新,也可以使用.append()
方法来添加列表项
例如:我想把周星驰
改为周星星
,并且把达叔
添加到我的列表里。
lst = ['周芷若', '周杰伦', '周星驰', '周润发']
lst[2] = '周星星'
lst.append('达叔')
print(lst)
['周芷若', '周杰伦', '周星星', '周润发', '达叔']
4.删除列表元素
用del
语句来删除列表的元素。
比如,我还是想让列表里都是姓周的,只能再把达叔删掉了。
lst = ['周芷若', '周杰伦', '周星星', '周润发', '达叔']
del lst[4]
print(lst)
['周芷若', '周杰伦', '周星星', '周润发']
5.列表的操作符
Python 表达式 | 结果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 长度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
[‘Hi!’] * 4 | [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] | 重复 |
3 in [1, 2, 3] | True | 元素是否存在于列表中 |
for x in [1, 2, 3]: print(x) | 1 2 3 | 迭代 |
6.Python列表常用API
操作列表的函数
序号 | 函数 |
---|---|
1 | len(list)列表元素个数 |
2 | max(list)返回列表元素最大值 |
3 | min(list)返回列表元素最小值 |
4 | list(seq)将元组转换为列表 |
序号 | 方法 |
---|---|
1 | list.append(obj)在列表末尾添加新的对象 |
2 | list.count(obj)统计某个元素在列表中出现的次数 |
3 | list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj)从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj)将对象插入列表 |
6 | list.pop(index=-1)移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj)移除列表中某个值的第一个匹配项 |
8 | list.reverse()反向列表中元素 |
9 | list.sort( key=None, reverse=False)对原列表进行排序: x.sort(key=lambda a:abs(a-3), reverse=False) |
10 | list.clear()清空列表 |
11 | list.copy()复制列表 |
二、元组
这里我偷个懒,元组的知识点几乎与列表大差不差,下面我总结一些差异的知识点。
1.元组的表达式
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
tup = (1, 2, 3, 4)
元组只包含一个元素的时候,需要在元素后面加个,
。
tup = (10,)
另外,
2.元组可以存放的数据类型
元组中的元素可以是不同类型的数据,如整数、浮点数、字符串
等。
3.元组的不可变性
元组最重要的是不可变的,元组不支持增删改操作,即不能向元组中添加、删除或修改元素。
4.元组的巧妙用法
4.1 多变量赋值
可以使用元组将多个变量一次性赋值,这在交换变量值时非常方便。例如:
a, b = 1, 2
a, b = b, a # 交换变量值
4.2函数返回多个值
函数可以返回一个元组,这样可以方便地返回多个值。例如:
def get_data():
# 从数据库中获取数据
return ("John", 30, "Male")
name, age, gender = get_data()
4.3格式化字符串
使用元组将变量传递给字符串的格式化操作符 %。例如:
person = ("John", 30)
sentence = "Name: %s, Age: %d" % person
4.4元组解包
可以将元组解包成多个变量。例如:
person = ("John", 30)
name, age = person
4.5作为不可变键使用
这个还没讲到
:元组可以作为字典的键,因为元组是不可变的。这在需要使用多个值作为键时很有用。
4.6元组拼接
可以使用 + 运算符将两个元组合并成一个新的元组。例如:
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
result = tuple1 + tuple2
4.7用于不可变列表
在需要存储不可变的列表时,可以使用元组。这样可以保证列表的内容不被修改。
三、集合
1.集合的表示
可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数创建集合。
注意 :创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
set1 = {1, 2, 3, 4}# 直接使用大括号创建集合
set2 = set([4, 5, 6, 7])# 使用 set()函数从列表创建集合
set3 = set((4, 5, 6, 7))# 使用 set()函数从元组创建集合
2.添加、删除元素
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
s.add( x ) 添加元素到集合 ,x 可以有多个,用逗号分开
s.update( x ) 添加元素到集合,且参数可以是列表,元组,字典等 ,x 可以有多个,用逗号分开
s1 = set((4, 5, 6, 7))
s1.add(100)
print(s1)
s1.update([200,300])
print(s1)
s.remove( x ):将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。**
s.discard( x ):将元素 x 从集合 s 中移除,如果元素不存在,不会发生错误。
s.pop():对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
s1 = {10, 20, 30}
s1.remove(20)
print(s1)
s1.remove(40)#报错
s1 = {10, 20, 30}
s1.discard(20)
print(s1)
s1.discard(40)
s1 = {10, 20, 30}
s1.pop()
print(s1)
3.集合内置方法完整API
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
len() | 计算集合元素个数 |
四、字典
1.字典的创建
字典是一种可变容器模型,且可存储任意类型对象。
字典的每个键值对( key:value )用冒号分割,每个对之间用逗号分割,整个字典包括在花括号 {} 中
d = {key1 : value1, key2 : value2, key3 : value3 }
d1 = {}#创建空字典
d2 = dict()#使用内建函数 dict()创建字典
d3 = {"name":"karen","age":23}
d4 = dict({"name":"jack","age":24})
print(d3)# 打印字典
print(len(d3))# 查看字典的数量
print(type(d3))# 查看类型
2.访问字典
字典访问需要访问key
,来访问value
mydic = {'Name': 'hqyj', 'Age': 7, 'Class': 'First'}
print (mydic['Name'])
print (mydic['Age'])
另外,如果访问字典的时候,没有key
访问的数据,则会报错。
3.修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对。
mydic = {'Name': 'hqyj', 'Age': 7, 'Class': 'First'}
mydic['Age'] = 8 # 更新
Agemydic['School'] = "华清" #添加信息
print (mydic['Age'])
print (mydic['School'])
4.删除字典中的元素
能删单一的元素也能清空字典,清空只需一项操作,显式删除一个字典用del命令。
mydic = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del mydic['Name'] # 删除键 'Name'
mydic.clear() # 清空字典
print (mydic['Age'])
print (mydic['School'])
del mydic # 删除字典
5.字典常用API
操作字典的函数:
序号 | 函数 | 描述 |
---|---|---|
1 | len(dict) | 计算字典元素个数,即键的总数。 |
2 | str(dict) | 输出字典,可以打印的字符串表示。 |
3 | type(variable) | 返回输入的变量类型,如果变量是字典就返回字典类型。 |
字典的方法:
序号 | 函数及描述 |
---|---|
1 | dict.clear()删除字典内所有元素 |
2 | dict.copy()返回一个字典的浅复制 |
3 | dict.fromkeys()创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 | dict.get(key, default=None)返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
5 | key in dict如果键在字典dict里返回true,否则返回false |
6 | dict.items()以列表返回一个视图对象 |
7 | dict.keys()返回一个视图对象 |
8 | dict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | dict.update(dict2)把字典dict2的键/值对更新到dict里 |
10 | dict.values()返回一个视图对象 |
11 | pop(key,default)删除字典 key(键)所对应的值,返回被删除的值。 |
12 | popitem()返回并删除字典中的最后一对键和值。 |