Python组合数据类型

一、认识组合数据类型

Python中常用的序列类型有字符串列表元组

Python中的序列支持双向索引:正向递增索引反向递减索引。

正向递增索引从左向右依次递增,第一个元素的索引为0,第二个元素的索引为1,以此类推;

反向递减索引从右向左依次递减,从右数第一个元素的索引为-1,第二个元素的索引为-2,以此类推。

 Python集合具备确定性互异性无序性三个特性。集合中的元素必须是不可变类型,Python中的整型、浮点型、字符串类型元组属于不可变类型,列表、字典及集合本身都属于可变的数据类型。

 字典(dict)是Python唯一的内置映射类型(映射类型以键值对的形式存储元素,键值对中的键与值之间存在映射关系。)

字典的键必须遵守的两个原则:

1.每个键只能对应一个值,不允许同一个键在字典中重复出现。

2.字典中的键是不可变类型。

二、列表

(一)创建列表 

list_one = []      	 # 使用[]创建空列表
list_two = list() 	 # 使用list()创建空列表

(二)访问列表元素

列表中的元素可以通过索引切片这两种方式进行访问,也可以在循环中依次访问。

list_one = ["Java", "C#", "Python", "PHP"]
# 索引:
print(list_one[1])
# 切片:
print(list_one[1]) 
# 循环:
for list in list_one:
    print(list, end=' ')

(三)添加列表元素

append()、extend()insert()这几个方法向列表中添加元素。

li_one = [ "Java", "C#", "Python", "PhP" ]
# append 在列表末尾添加元素
li_one.append("C++")
# extend 在列表末尾添加另一个序列的所有元素
li_one.extend([["Android", "IOS"])
# insert 按照索引将元素插入列表的指定位置
li_one.insert(2,“HTML")

(四)元素排序

列表的排序是将元素按照某种规定进行排列。

用sort()reverse()sorted()将列表进行排序。

list_one = [6, 2, 5, 3]
# sort 有序的元素会覆盖原来的列表元素,不产生新列表
list_one.sort()
# sorted 产生排序后的新列表,排序操作不会对原列表产生影响
list_two = sorted(list_one)
# reverse 逆置列表,即把原列表中的元素从右至左依次排列存放
list_one.reverse()

删除列表元素的常用方式有del语句、remove()方法、pop()方法和clear()方法。

li_one = [6, 2, 5, 3]
# del 删除列表中指定位置的元素
del li_one[0]
# remove 移除列表中匹配到的第一个元素
li_one.remove(3)
# pop 移除列表中的某个元素,若未指定具体元素,则移除列表中的最后一个元素
li_one.pop()
# clear 清空列表
li_one.clear()

(五)列表推导式

列表推导式是符合Python语法规则的复合表达式。列表推导式的基本格式如下:

 [exp for x in list] 

列表推导式还可以结合if判断语句或for循环嵌套,生成更灵活的列表。

 三、元组

元组的表现形式为一组包含在圆括号“ () ”中、由逗号分隔的元素,元组中元素的个数、类型不受限制。还可以使用内置函数tuple()构建元组。

t1 = ()	# 使用()构建元组

t2 = tuple()	# 使用tuple构建元组

当使用圆括号“()”创建元组时,如果元组中只包含一个元素,那么需要在该元素的后面添加逗号!

t1 = ('python') 
t2 = ('python',)
print(type(t1))
print(type(t2))

<class 'str'>

<class 'tuple'>

元组支持以索引切片方式访问元组的元素,也支持在循环中遍历元组。

tuple_demo = ('p','y','t', 'h', 'o','n')
# 使用索引:
tuple_demo[2]
# 使用切片:
tuple_demo[2:5]
# 遍历元组:
for i in tuple_demo:
    print(i)

四、集合

集合(set)本身是可变类型,但放入集合中的元素必须是不可变类型。大括号“ {} ”或内置函数set()均可构建集合。

s1 = {1}	 # 使用{}构建集合

s2 = set([1,2])	 # 使用set构建元组

使用{}不能创建空集合(不包含元素的{}创建的是字典变量),空集合只能利用set()函数创建。

set_demo1 = {}
set_demo2 = set()
print(type(set_demo1))
print(type(set_demo2))

<class 'dict'>

<class 'set'>

集合是可变的,集合中的元素可以动态增加删除

 集合也可以利用推导式创建,集合推导式外侧为大括号“{}”。

 {exp for x in set if cond} 

六、字典

字典 是一系列键值对,每个键 都与一个值相关联,与键相关联的值可以是数字、字符串、列表和字典。

(一)字典的创建

每个元素通过逗号“,”分隔,每对键值通过“:”分隔。创建字典还可以使用内置函数dict创建字典。

d1 = {'A': 123, 12: 'python'}	 # 使用{}构建集合

d2 = dict({'A': '123', 'B': '135'})	 # 使用dict构建元组

字典元素无序,键值必须唯一。

(二)字典的访问

字典的值可通过“键”或内置方法get()访问。

d2 = dict({'A': '123', 'B': '135'})
# 键
d2['A']

'123'

d2 = dict({'A': '123', 'B': '135'})
# get()
d2.get('B')

'135'

用内置方法keys()values()items()

info = {'name': 'Jack','age':23,'height':185}
# keys() 获取所有键
print(info.keys())

 dict_keys(['name', 'age', 'height'])

info = {'name': 'Jack','age':23,'height':185}
# values() 获取所有值
print(info.values()))

dict_values(['Jack', 23, 185])

info = {'name': 'Jack','age':23,'height':185}
# items() 获取所有元素
print(info.items())

dict_items([('name', 'Jack'), ('age', 23), ('height', 185)])

(三) 字典元素的添加和修改

通过为指定的键赋值或使用update()方法添加或修改元素

通过键添加元素:字典变量[键] = 值

使用update()添加元素:dict.update(key=value)

add_dict = {'name': 'Jack','age':23,'height':185
# 通过键添加
add_dict['sco'] = 98
# 使用update方法添加
add_dict.update(sco=98)	

修改字典元素的本质是通过键获取值,再重新对元素进行赋值。

modify_dict = {'stu1': '小明', 'stu2': '小刚', 'stu3': '小兰'}
# 通过键修改
modify_dict['stu3'] = '刘婷'
# 使用update方法修改
modify_dict.update(stu2='张强')

(四) 字典元素的删除

pop()、popitem()和clear()方法删除字典中的元素:

pop():根据指定键值删除字典中的指定元素
popitem():随机删除字典中的元素
clear():清空字典中的元素

(五) 字典推导式

字典推导式外侧为大括号“{}”,且内部需包含键和值两部分:

 {new_key:new_value for key,value in dict.items()} 

利用字典推导式可快速交换字典中的键和值:

old_dict = {'name': 'Jack','age':23,'height':185}
new_dict = {value:key for key,value in old_dict.items()}
print(new_dict)

{'Jack': 'name', 23: 'age', 185: 'height'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值