1.元组的使用
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。
>>> aTuple = ('et',77,99.9) >>> aTuple ('et',77,99.9)
1.1 访问元组
tuple = ('hello',100,3.14) print(tuple[0]) """ 输出结果: hello """
1.2 修改元组
tuple = ('hello',100,3.14) tuple[1] = 88 """ 输出结果: tuple[1] = 88 ~~~~~^^^ TypeError: 'tuple' object does not support item assignment """
说明: python中不允许修改元组的数据,包括不能删除其中的元素。
1.3 count,index
index和count与字符串和列表中的用法相同
>>> a = ('a', 'b', 'c', 'a', 'b') >>> a.index('a', 1, 3) # 注意是左闭右开区间 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: tuple.index(x): x not in tuple >>> a.index('a', 1, 4) 3 >>> a.count('b') 2 >>> a.count('d') 0
1.4 定义只有一个数据的元组
定义只有一个元素的元组,需要在唯一的元素后写一个逗号
>>> a = (11) >>> a 11 >>> type(a) int >>> a = (11,) # 只有一个元素的元组,必须要在元素后写一个逗号 >>> a (11,) >>> type(a) tuple
2.字典的基本使用
定义字典的格式:{键1:值1, 键2:值2, 键3:值3, ..., 键n:值n}
变量info为字典类型:
info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国上海'} info['name'] # 字典使用键来获取对应的值
说明:
-
字典和列表一样,也能够存储多个数据
-
列表中找某个元素时,是根据下标进行的;字典中找某个元素时,是根据'名字'(就是冒号:前面的那个值,例如上面代码中的'name'、'id'、'sex')
-
字典的每个元素由2部分组成,键:值。例如 'name':'班长' ,'name'为键,'班长'为值
-
键可以使用数字、布尔值、布尔值、元组等不可变数据类型,但是一般习惯使用字符串
-
每个字典里的key都是唯一的,如果出现了多个key,后面的value会覆盖前一个key对应的value.
在习惯上:
-
列表更适合保存多个商品、多个姓名、多个时间,这样的相似数据;
-
字典更适合保存一个商品的不同信息、一个人的不同信息,这样的不同数据。
2.1 字典的增删改查
一、查看元素
除了使用key查找数据,还可以使用get来获取数据
info = {'name':'班长','age':18} print(info['age']) # 获取年龄 # print(info['sex']) # 获取不存在的key,会发生异常 print(info.get('sex')) # 获取不存在的key,获取到空的内容,不会出现异常 print(info.get('sex', '男')) # 获取不存在的key, 可以提供一个默认值。
注意,获取默认值不会修改字典内容。
二、修改元素
字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改
demo:
info = {'name':'班长', 'id':100} print('修改之前的字典为 %s:' % info) info['id'] = 200 # 为已存在的键赋值就是修改 print('修改之后的字典为 %s:' % info)
结果:
修改之前的字典为 {'name': '班长', 'id': 100} 修改之后的字典为 {'name': '班长', 'id': 200}
三、添加元素
如果在使用 变量名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素
demo:添加新的元素
info = {'name':'班长'} print('添加之前的字典为:%s' % info) info['id'] = 100 # 为不存在的键赋值就是添加元素 print('添加之后的字典为:%s' % info)
结果:
添加之前的字典为:{'name': '班长'} 添加之后的字典为:{'name': '班长', 'id': 100}
四、删除元素
对字典进行删除操作,有一下几种:
-
del
-
clear()
demo:del删除指定的元素
info = {'name':'班长', 'id':100} print('删除前,%s' % info) del info['name'] # del 可以通过键删除字典里的指定元素 print('删除后,%s' % info)
结果
删除前,{'name': '班长', 'id': 100} 删除后,{'id': 100}
del删除整个字典
info = {'name':'monitor', 'id':100} print('删除前,%s'%info) del info # del 也可以直接删除变量 print('删除后,%s'%info)
结果
删除前,{'name': 'monitor', 'id': 100} Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'info' is not defined
clear清空整个字典
info = {'name':'monitor', 'id':100} print('清空前,%s'%info) info.clear() print('清空后,%s'%info)
结果
清空前,{'name': 'monitor', 'id': 100} 清空后,{}
2.2 字典的遍历
info = {'name':'配的龙','high':'183cm','weigh':'65kg'} print(info) # 遍历 key for key in info.keys(): print(key) """ 输出结果: name high weigh """ # 遍历 value for value in info.values(): print(value) """ 输出结果: 配的龙 183cm 65kg """ # 遍历元素 for x in info.items(): print(x) """ 输出结果: ('name', '配的龙') ('high', '183cm') ('weigh', '65kg') """ # 遍历 key-value for key,value in info.items(): print(key,value) """ 输出结果: name 配的龙 high 183cm weigh 65kg """
3.集合的使用
集合(set)是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合。
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,...} 或者 set(value)
添加元素
语法格式如下:
s.add(x) Copy
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
>>>thisset = set(("Google", "Runoob", "Taobao")) >>> thisset.add("Facebook") >>> print(thisset) {'Taobao', 'Facebook', 'Google', 'Runoob'}
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
s.update( x )
x 可以有多个,用逗号分开。
>>>thisset = set(("Google", "Runoob", "Taobao")) >>> thisset.update({1,3}) >>> print(thisset) {1, 3, 'Google', 'Taobao', 'Runoob'} >>> thisset.update([1,4],[5,6]) >>> print(thisset) {1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
移除元素
语法格式如下:
s.remove( x )
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
>>>thisset = set(("Google", "Runoob", "Taobao")) >>> thisset.remove("Taobao") >>> print(thisset) {'Google', 'Runoob'} >>> thisset.remove("Facebook") # 不存在会发生错误 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Facebook' >>>
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:
s.discard( x ) Copy >>>thisset = set(("Google", "Runoob", "Taobao")) >>> thisset.discard("Facebook") # 不存在不会发生错误 >>> print(thisset) {'Taobao', 'Google', 'Runoob'}
我们也可以设置随机删除集合中的一个元素,语法格式如下:
s.pop() Copy thisset = set(("Google", "Runoob", "Taobao", "Facebook")) x = thisset.pop() print(x) print(thisset)
set常见方法列表
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
union | 返回两个集合的并集 |
update() | 给集合添加元素 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 删除集合中的元素,该元素在指定的集合中不存在。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
4.通用方法
字符串、列表、元组、字典和集合,它们有很多相同点,都是由多个元素组合成的一个可迭代对象,它们都有一些可以共同使用的方法。
在Python里,常见的算数运算符,有一些可以使用于可迭代对象,它们执行的结果也稍有区别。
运算符 | Python 表达式 | 结果 | 描述 | 支持的数据类型 |
---|---|---|---|---|
+ | [1, 2] + [3, 4] | [1, 2, 3, 4] | 合并 | 字符串、列表、元组 |
- | {1,2,3,4} - {2,3} | {1,4} | 集合求差集 | 集合 |
* | ['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 复制 | 字符串、列表、元组 |
in | 3 in (1, 2, 3) | True | 元素是否存在 | 字符串、列表、元组、字典 |
not in | 4 not in (1, 2, 3) | True | 元素是否不存在 | 字符串、列表、元组、字典 |