python学习笔记(7)---列表&集合&元组&字典

一、序言

列表、集合、元组均为一系列数据的集合
区别在于新建方式和作用域

列表:var1 = [] 基础类型
集合:var2 = () 不能修改,只可查询
元组:var3 = {} 无序且唯一

二、列表

注意:字符串也算是列表的一种,所以字符串中的方法大多数列表也可以使用

查找方法:

方法作用
index()返回指定数据所在位置的下标
count()统计指定数据在当前列表中出现的次数
len()返回列表⻓度,即列表中数据的个数
in与not in判断某个数据是否在(或者不在)列表当中
list1 = [123, "234", 123]
print(list1.index(123)) #输出:0
print(list1.count(123))	#输出:2
print(len(list1))		#输出:3
print(123 in list1)		#输出:True

增加数据:

方法作用
append()列表结尾追加数据(可以支持追加列表,但是增加的是列表)
extend()列表结尾追加数据(可以支持追加列表,依次增加)
insert()指定下标插入数据
list1 = [123, "234", 123]
list2 = [234]
list1.append(789)
print(list1)	#输出:[123, '234', 123, 789]
list1.append(list2)
print(list1)	#输出:[123, '234', 123, 789, [234]]

list1 = [123, "234", 123]
list2 = [234]
list1.extend("789")
print(list1)	#输出:[123, '234', 123, '7', '8', '9'](字符串也理解为一个列表)
list1.extend(list2)
print(list1)	#输出:[123, '234', 123, '7', '8', '9', 234]

list1 = [123, "234", 123]
list2 = [234]
list1.insert(1, "789")
print(list1)	#输出:[123, '789', '234', 123]

删除数据

方法作用
del 列表删除整个列表(此变量就没了)
pop()删除指定下标的数据(默认为最后⼀个)
remove()移除列表中某个数据的第⼀个匹配项
clear()清空列表
name_list = ['张三', '李四', '王五','赵六']
del name_list
print(name_list)
#输出:异常,NameError: name 'name_list' is not defined  del后此变量已经没了

name_list = ['张三', '李四', '王五','赵六']
name_list.pop(2)
print(name_list)	#输出:['张三', '李四', '赵六']删除倒数第二个
name_list.pop()
print(name_list)	#输出:['张三', '李四'] 默认删除最后一个

name_list = ['张三', '李四', '张三','赵六']
name_list.remove('张三')
print(name_list)	#输出:删除了第一个“张三”

name_list = ['张三', '李四', '张三','赵六']
name_list.clear()
print(name_list)		#输出:[]内容全部清空
print(type(name_list))	#输出:<class 'list'> 清空后类型仍然为列表类型

修改数据

直接通过下标修改:

name_list = ['张三', '李四', '王五','赵六']
name_list[0] = '阿坤'
print(name_list)	#输出:['阿坤', '李四', '王五','赵六']仅改变了第一个数据

reverse(): 将列表数据逆置

num_list = [1, 5, 2, 3, 6, 8]
num_list.reverse()
print(num_list)
#输出: [8, 6, 3, 2, 5, 1]

sort(reverse=bool):排序,bool为true则为降序排序,为false则为升序排序

注意,这种排序只用于整形或浮点型,用于字符会报异常

# 列表序列.sort(reverse=False)
li = [2,3,5,6,1,4,8]
li.sort(reverse=False)
print(li)
# [1, 2, 3, 4, 5, 6, 8]

li.sort(reverse=True)
print(li)
# [8, 6, 5, 4, 3, 2, 1]

三、元组

由于元组类型不支持修改,仅可以在初始化时存入数据,且元组的相关方法仅有查找

方法作用
index()返回指定数据所在位置的下标
count()统计指定数据在当前元组中出现的次数
len()返回元组⻓度,即元组中数据的个数
使用方法与列表一致

四、集合

集合的创建可以使用{}和set(),创建空集合仅可以使用set(),{}用于创建空字典;
另外,集合由于是无序的,所以不支持下标

增加数据

方法作用
add()添加一个元素
update()添加多个数据
name_set_one = {"张三", "李四", "王五", "赵六", "李四"}
print(name_set_one)
#输出:{'王五', '赵六', '李四', '张三'}可以发现输出的顺序和初始化时不一致,而且每次程序运行的打印都不一致
name_set_one.add("坤哥")
print(name_set_one)
#输出:{'赵六', '坤哥', '李四', '王五', '张三'} 	插入位置也是随机的
name_set_one.update(["sad", "dffg", "weqr"])
print(name_set_one)
#输出:{'sad', 'weqr', '赵六', '坤哥', 'dffg', '李四', '王五', '张三'}

删除数据

方法作用
remove()删除集合中的指定数据,如果数据不存在则抛出异常
discard()删除集合中的指定数据,如果数据不存在也不会抛出异常
pop()随机删除一个数据(实际是删除第一个数据,随机删除是通过运行过程中集合的无序完成的)
s1 = {10, 20}
s1.remove(10)
print(s1)	#输出:{20} 删除10
s1.remove(30)
print(s1)	#输出:KeyError: 30 因不存在30,抛出异常

s1 = {10, 20}
s1.discard(10)
print(s1)	#输出:{20} 删除10
s1.discard(30)
print(s1)	#输出:{20} 未抛出异常

s1 = {10, 20, 30, 50, 60}
print(s1)	#输出:{50, 20, 10, 60, 30}
s1.pop()
print(s1)	#输出:{20, 10, 60, 30}
s1.pop()
print(s1)	#输出:{10, 60, 30}

五、字典

字典⾥⾯的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不⽀持下标,后期⽆论数据如何变化,只需要按照对应的键的名字查找数据即可。

字典的特点:
1、符号为大括号(与集合一致)
2、数据均以键值对的方式出现
3、各键值对之间用逗号隔开
即 dict1 = {key1:value1, key2:value2}
示例:dict1 = {‘name’: ‘张三’, ‘age’: 20, ‘gender’: ‘男’}

增加数据

字典序列[key] = 值
如key存在,则修改此key对应的值,
如不存在,则新增此key和对应的值

删除数据

del:删除整个字典或者删除指定内容
clear():清空整个字典

dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
del dict1['gender']
print(dict1)
# 输出:{'name': '张三', 'age': 20}

del dict1
print(dict1)
# 输出:NameError: name 'dict1' is not defined 整个字典都被删除了

dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
dict1.clear()
print(dict1) # 输出:{} 即字典对象还在,但是内容空了,和del那种直接删除对象不一样

查找数据

根据键值查找值:

dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
print(dict1['name']) #输出: 张三
print(dict1['id']) #输出: KeyError: 'id' 无此key值

get():查找数据,但如果健不存在,则返回None

dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
print(dict1.get('name')) #输出: 张三  和根据键值是一致的
print(dict1.get('id', 110)) # 输出:110  相当于查找'id'的内容,但不存入dict中
print(dict1)	#输出:{'name': '张三', 'age': 20, 'gender': '男'} 可以发现无id
print(dict1.get('id')) # 输出: None 不会抛出异常

keys():查找所有的健
values():查找所有的值
items():查找键和值,返回元组

dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
print(dict1.keys()) 
#输出 :dict_keys(['name', 'age', 'gender']),其中dict_keys是数据类型,字典键值类型
print(type(dict1.keys()))
#输出 :<class 'dict_keys'>

print(dict1.values()) 
#输出 :dict_values(['张三', 20, '男']),其中dict_values是数据类型,字典键值类型
print(type(dict1.values()))
#输出 :<class 'dict_values'>

print(dict1.items()) 
#输出 :dict_items([('name', '张三'), ('age', 20), ('gender', '男')]),其中dict_items是数据类型,字典键值类型
print(type(dict1.items()))
#输出 :<class 'dict_items'>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值