iOS开发人员如何学习Python编程7-集合类型2

143 阅读3分钟

这是我参与11月更文挑战的7天,活动详情查看:2021最后一次更文挑战

tuple

tuple元组也是序列结构,但是是一种不可变序列,可以简单的理解为内容不可变的列表。除了在内部元素不可修改的区别外,元组和列表的用法差不多:

>>> tu = ()
>>> tu
()

>>> tu1 = tuple()
>>> tu1
()

>>> type(tu)
<class 'tuple'>
>>> type(tu1)
<class 'tuple'>

元组中不允许的操作

不允许修改、新增元素
>>> tup = (1,2,3)
>>> tup[2] = 5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

一旦想改变该元组,只能重新开辟一块内存,创建新的元组:

>>> tup = (1,2,3)
>>> new_tup = tup+(4,)
>>> new_tup
(1, 2, 3, 4)

⚠️注意:元组只保证它的一级子元素不可变,对于嵌套的元素内部,不保证不可变,如下:

>>> tup = (1,2,3,['cat',5])         # 将'cat'改为4
>>> tup[3][0] = 4
>>> tup
(1, 2, 3, [4, 5])

>>> tup1 = (1,2,3,('cat',5))        # 将'cat'改为4
>>> tup1[3][0] = 4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

不允许删除某个元素(但可以删除整个元组)
实际上,所有会对元组内部元素发生修改动作的方法。例如,元组没有removeappendpop等方法。

列表和元组的转换

  • 元组转为列表: 
>>> tu = (1,2,3)
>>> list(tu)
[1, 2, 3]
  • 列表转为元组: 
>>> li = [1,2,3]
>>> tuple(li)
(1, 2, 3)

字典

Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值的类型也可以是其它任何数据类型。

字典的key必须是不可变的对象,例如:

  • 整数
  • 字符串
  • bytes
  • 元组 使用最多的还是字符串

⚠️注意列表字典集合等就不可以作为key。同时,同一个字典内的key必须是唯一的,但值则不必。 字典可精确描述为不定长、可变、无序、散列的集合类型。

创建字典

>>> dic1 = {'name':'cat','age':'18'}
>>> type(dic1)
<class 'dict'>

>>> dic2 = dict(name="cat",age='18')
>>> type(dic2)
<class 'dict'>

>>> dic3 = dict([('name','cat'),('age','18')])
>>> type(dic3)
<class 'dict'>

>>> dic1 == dic2 == dic3    # ==比较数值
True

删除字典元素、清空字典和删除字典:

>>> dic1
{'name': 'cat', 'age': 18, 'gender': 'male'}
>>> del dic1['name']            # 删除某key:value元素

>>> dic1
{'age': 18, 'gender': 'male'}

>>> dic1
{'age': 18, 'gender': 'male'}
>>> dic1.clear()                # 清空字典
>>> dic1
{}

>>> del dic1                    # 删除整个字典
>>> dic1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'dic1' is not defined

字典的方法

  • get(key):返回指定键的值,如果值不在字典中,则返回default值。
  • items():以列表返回可遍历的(键, 值) 元组对。
  • keys():以列表返回字典所有的键。
  • values():以列表返回字典所有的值。
>>> dic1 = {'name':'cat','age':18}
>>> dic1.get('name')        
'cat'
>>> dic1.get('gender')  # 当key:value不存在时,返回None

>>> dic1.items()
dict_items([('name', 'cat'), ('age', 18)])
>>> for k,v in dic1.items():
...     print(k,v)
...
name cat
age 18

>>> dic1.keys()
dict_keys(['name', 'age'])
>>> dic1.values()
dict_values(['cat', 18])