python.集合转列表_python列表,元组,字典和集合数据结构

037a89d385389feae582daac425f3661.png

一、简介

数据结构是我们用来处理一些数据的结构,用来存储一系列的相关数据。

在python中,有列表,元组,字典和集合四种内建的数据结构,这些也叫做序列,是一种数据存储方式,用来存储一系列的数据

二、列表

用于存储任意数目、任意类型的数据集合。列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表可以包含数字,字符串等,表示如下:

a = [1,’name’,’努力奋斗’,True]
  • 列表的创建:

1.基础创建

a = []

2.list创建

a = list()

3.range创建整数列表

range()可以帮助我们非常方便的创建整数列表,这在开发中及其有用。语法格式为:

range(start, end ,step)

start 参数:可选,表示起始数字。默认是0

end 参数:必选,表示结尾数字。

step 参数:可选,表示步长,默认为1

a = list(range(4)) 则a = [0,1,2,3]

a = list(range(3,10,2)) 则a = [3, 5, 7, 9]

以下是一些常用的方法(以a = [1,’name’,’努力奋斗’,True],b = [1,’a’,False]例):

99d36c25594ca04591a4e36cf83ef183.png

三、元组

元组用来将多样的对象集合到一起,元组属于不可变序列,不能修改元组中的元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。

  • 元组的创建:

1.基础创建

a = ()

2.tuple创建

a = tuple()

3..range创建整数元组

a = tuple(range(4)) ---------a = (0, 1, 2, 3)

总结:

tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。

list()可以接收元组、字符串、其他序列类型、迭代器等生成列表。

注意:元组只有一个元素时必须在后面加逗号,如:a = (1,)

元组中有非零个元素时,可以省去括号,如

a = (1,) 和 a = 1,相同

a = (a = 1,'name','努力奋斗',True) 和 a = 1,'name','努力奋斗',True相同

但是为保证书写的规范,还是建议随时随地带上括号。

  • 元组的访问:元组可以使用下标索引来访问元组中的值,如下实例:

163de88822b6ddac223cd18ad54f4794.png
  • 元组的截取:

c448ce5f6a2c51eff42d25df8dbe9130.png

注意:在列表和元组中,正向排序第一个元素是0位,第二位元素是1位,以此类推。反向排序倒数第一位是-1位。

截取元素时,规则是包头不包尾,即包含开始的元素,不包含结尾的元素。以a[1:4]为例,包含1位(第二个)元素,不包含4位(第五个)元素。

  • 元组的内置函数

1. len(tuple)-----------计算元组元素个数。

2. max(tuple)---------返回元组中元素最大值。

3. min(tuple)----------返回元组中元素最小值。

4. tuple(list)-----------将列表转换为元组。

5. um(tuple)-----------计算数字元组的和。

  • zip

zip(列表1,列表2,...)将多个列表对应位置的元素组合成为元组,并返回这个zip 对象。

1d7688ee7eca73d59c40a0ac62bd7571.png
使用zip和tuple转化为元组

ba19b6847e51d57cef69ce9cac816051.png
使用zip和list转化为列表

注意:这个zip对象只能使用一次,之后便会失效。

四、字典

字典是由键值对组成的无序可变序列,在字典中,健必须是唯一且不可重复的,但值可以是任意数据,且可以重复。

  • 字典的创建

1.基础创建

a = {}

2.通过tuple创建

a = dict()

3.通过zip创建

	a = [1,'name','努力奋斗',True]
	b = [1,2,3]
	dict(zip(a,b))

f79f873044d10ef6c1c93f9239d022f4.png

4. 通过fromkeys 创建值为空的字典

	a = dict.fromkeys(['today','work','time'])

6eb28f49dbef30e6d4b8425186384ed9.png
  • 字典的增删改查

1.增:在字典里增加新的键值对

>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a['eat'] = 'chicken'
>>>a
{'today': '2019/7', 'work': 'waiter', 'time': 10, 'eat': 'chicken'}

2.删:分为两种,一种是删除字典里的键值对,但字典还存在,只是为空字典;另一种直接删除这个字典,使其不存在。

>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a.clear()   #清空字典
>>>a
{}
>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>del a
>>>a   #删除字典后不存在,所以报错
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'a' is not defined

3.改:修改字典的值,健不能修改

>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a['time'] = 12
>>>a
{'today': '2019/7', 'work': 'waiter', 'time': 12}

4.查:使用相应的健查询

>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a['today']
'2019/7'
>>>a.get('time')
10

两种方式的不同在于,[]访问的健如果不存在会报错,get()访问的健不存在则会返回None。

4.1查询所有键值对

>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a.items()
dict_items([('today', '2019/7'), ('work', 'waiter'), ('time', 10)])

4.2查询所有健或值

>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a.keys()
dict_keys(['today', 'work', 'time'])
>>>a.values()
dict_values(['2019/7', 'waiter', 10])

五、集合

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

  • 集合的创建:使用大括号{}或者set()创建,但是创建空集合只能使用set()创建。Set可以将列表元组转换为集合,但是会消除重复的部分。字典也可转换为集合,但只保留健。
>>>a = {1,’name’,3}
>>>a = set('1name3')
>>.a
{'3', 'e', 'n', 'm', '1', 'a'}

1.列表转换为集合

>>>a = [1,'name','努力奋斗',True]
>>>set(a)
{1, 'name', '努力奋斗'}

2.元组转换为集合

>>>a = (1,'name','努力奋斗',True)
>>>set(a)
{1, 'name', '努力奋斗'}

3.字典转换为集合

>>>a = {1:'name','努力奋斗':True}
>>>set(a)
{1, '努力奋斗'}
  • 集合的并集,交集与差集,以a = {2,’your’,’Bob’,5},b = {‘name’,’Bob’,21}为例。

1.并集:合为同一个集合,去除重复项

>>>a = {2,'your','Bob',5}
>>>b = {'name','Bob',21}
>>>a|b
{2, 'Bob', 5, 'your', 21, 'name'}
>>>a.union(b)
{2, 'Bob', 5, 'your', 21, 'name'}

2.交集:两个集合的相同部分

>>>a = {2,'your','Bob',5}
>>>b = {'name','Bob',21}
>>>a&b
{'Bob'}
>>>a.intersection(b)
{'Bob'}

3.差集:一个集合在另一个集合没有的部分。

>>>a = {2,'your','Bob',5}
>>>b = {'name','Bob',21}
>>>a - b
{2, 5, 'your'}
>>>a.difference(b)
{2, 5, 'your'}
  • 集合一些内置方法

9fcc3688c6acfbe6923e03e7b12611ae.png
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值